标签: android-arrayadapter

如何在自定义ListView适配器中处理RadioGroup的onCheckedChangeListener

我正在开发具有自定义布局列表视图如下应用:
它有4个RadioButtons中RadioGroup和TextView.实际上,它将显示为question(TextView)和answers(RadioButtons)列表.上面的视图在我的自定义适配器中膨胀了ArrayAdapter<Question>.

问题是,我应该如何维护RadioButtons我的自定义状态Adapter?当RadioButtonis pressed/checked和list向下滚动时,会adapter自动回收视图并RadioButton丢失状态.

  • 那么,任何人都可以指导任何关于此的链接/信息吗?
  • 或者我该如何实施问题答案清单?

第一条遵循:http: //www.vogella.de/articles/AndroidListView/article.html.

以上链接使用a CheckBox,以类似的方式我想使用RadioGroup(RadioButtons)代替CheckBoxes.

android radio-button android-arrayadapter android-listview custom-adapter

4
推荐指数
1
解决办法
2万
查看次数

将用户输入从编辑文本添加到列表视图中

我正在尝试从编辑文本到列表视图中获取用户输入,我已经看到了这个类似问题的答案,但我无法弄明白

我试过这个,没有从IDE收到任何错误,但它不起作用

public class ListtestActivity extends Activity {
/** Called when the activity is first created. */

Button bt;
EditText et;
TextView tv;
ListView lv;
ArrayAdapter<String> adapter;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    bt = (Button) findViewById(R.id.button1);
    et = (EditText) findViewById(R.id.editText1);
    tv = (TextView) findViewById(R.id.textView1);
    lv = (ListView) findViewById(R.id.listView1);
    String input = et.getText().toString();
    String[] values = new String[] {"", input};

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, values);
    lv.setAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)

尝试以下也

public class ListtestActivity extends Activity {
ArrayAdapter<String> …
Run Code Online (Sandbox Code Playgroud)

arrays android listview arraylist android-arrayadapter

4
推荐指数
1
解决办法
2万
查看次数

ArrayAdapter的getView()方法重复列表中的前两个或三个项目

我ArrayAdapter使用重写getView()方法扩展了一个来填充我的ListView对象,但是适配器会从ArrayList我传递给它的前两个或三个对象中获取,然后只需在列表的整个长度上以看似随机的顺序重复这些对象.此外,当我在其中向上和向下滚动时ListView,某些行会从一个列表项更改为另一个列表项.该ArrayList<Credit>对象从JSONObject填充,据我所知,在传递给对象之前是正确的ArrayAdapter.

我的习惯 ArrayAdapter

private class CreditArrayAdapter extends ArrayAdapter<Credit> {
    private ArrayList<Credit> credits;
    private int creditCount;

    public CreditArrayAdapter(Context ctx, int textViewResourceId, List<Credit> items) {
        super(ctx, textViewResourceId, items);
        credits = (ArrayList<Credit>) items;
        creditCount = credits.size();
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View v = convertView;
        if (v == null) {
            LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = vi.inflate(R.layout.list_item_movie_medium, null);
            Credit current = credits.get(position);
            Log.d(tag, …
Run Code Online (Sandbox Code Playgroud)

android android-arrayadapter android-listview

4
推荐指数
1
解决办法
8542
查看次数

对ArrayAdapter或ArrayList的内容进行排序

我正在研究android项目,并正在使用从SQLite数据库中检索数据的ListView.

我正在使用ArrayList创建数据集,然后将此ArrayList添加到ArrayAdapter中.

当从数据库中检索数据时,我告诉SQLite进行排序,以便在将其添加到ListView时按字母顺序排列.在某些时候,信息将动态添加到ListView,而不需要再次从数据库中重新获取所有内容.但是,我想按字母顺序保留所有内容.

我该怎么做,我是否对DataSet进行排序,然后调用notifyDataSet Changes或直接在ArrayAdapter上进行排序.我已经考虑在ArrayAdapter上执行排序,但是这需要一个使用Comparator的参数但不确定它是什么,并且找不到任何可能对我想要实现的任何帮助的工作示例.

下面是填充数组并设置列表适配器的代码

ArrayList<Spanned> passwords = managePasswordList.getPasswordList();
        if (passwords != null && passwords.size() > 0)
        {
            passwordArrayAdapter = new ArrayAdapter<Spanned>(getActivity().getApplicationContext(), 
                    android.R.layout.simple_list_item_activated_1, passwords);
            setListAdapter(passwordArrayAdapter);
            myListView.setTextFilterEnabled(true);
            txtNoRecords.setVisibility(View.GONE);
        }
        else
        {
            txtNoRecords.setVisibility(View.VISIBLE);
        }
Run Code Online (Sandbox Code Playgroud)

然后,我将数据添加到数据集并使用以下内容刷新列表视图

String company = Encryption.decrypt(passwords.get(i).company);
                    String username = Encryption.decrypt(passwords.get(i).username);
                    details = Html.fromHtml(company + "<br />" + "<small><font color=\"#767676\">" + username + "</b></small>");    
Run Code Online (Sandbox Code Playgroud)

passwords.add(细节);
passwordArrayAdapter.notifyDataSetChanged();

感谢您的任何帮助,您可以提供.

更新1 我尝试过尼克布拉德伯里提出的建议,但我对比较器有问题.我有以下代码,但我不知道从哪里开始.

SQLiteDatabase myDb = null;
        Cursor cursor = null;
        ArrayList<Spanned> passwords = new ArrayList<Spanned>();
        try
        {
            myDb = context.openOrCreateDatabase("PasswordManager", Context.MODE_PRIVATE, null); …
Run Code Online (Sandbox Code Playgroud)

android arraylist android-arrayadapter

4
推荐指数
1
解决办法
9959
查看次数

AutoCompleteTextView 不显示建议

我正在尝试为 android 创建一个应用程序,我想在其中继续AutoCompleteTextView显示建议以减少用户的努力。目前我正在用我写的一个小代码进行测试,但我没有得到建议。我把代码贴出来,请帮我找出错误。

public class MainActivity extends Activity {

private ArrayList<Map<String, String>> objects;
private AutoCompleteTextView autotextView;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    autotextView = (AutoCompleteTextView) findViewById(R.id.autocompleteView);

    objects = new ArrayList<Map<String, String>>();

    Map<String, String> NamePhoneType = new HashMap<String, String>();
    NamePhoneType.put("Name", "John");
    NamePhoneType.put("Phone", "1234567890");
    objects.add(NamePhoneType);
    NamePhoneType.put("Name", "Steve");
    NamePhoneType.put("Phone", "4567890123");
    objects.add(NamePhoneType);

    ArrayAdapter<Map<String, String>> am = new ArrayAdapter<Map<String, String>>(
            this, R.layout.list_item, objects);

    autotextView.setAdapter(am);
}
}
Run Code Online (Sandbox Code Playgroud)

list_item.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<TextView
    android:id="@+id/ccontName"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Name" …
Run Code Online (Sandbox Code Playgroud)

android autocompletetextview android-arrayadapter

4
推荐指数
1
解决办法
4336
查看次数

无法在我的自定义ArrayAdapter中访问R.layout.mylayoutname

我正在尝试为我的类别列表创建自定义适配器.出于某种原因,当我试图给它充气时,我无法访问我的category_item布局.这是我的代码:

public class CategoryAdapter extends ArrayAdapter<Category> {

    LayoutInflater mInflater;
    List<Category> list;

public CategoryAdapter(Context context, int resource, int textViewResourceId, List<Category> objects) {
    super(context, resource, textViewResourceId, objects);

    mInflater = LayoutInflater.from(context);
    list = objects;
}

public View getView(int position, View convertView, ViewGroup parent) {

    final ViewHolder holder;

    if(convertView==null){

        convertView=mInflater.inflate(***resource***, null);
        holder = new ViewHolder();

    }

    return convertView;
}

// Declaring new class ViewHolder
class ViewHolder{
    TextView category_name;
}
Run Code Online (Sandbox Code Playgroud)

它说resource我应该能够访问我的category_item.xml布局 - R.layout.category_item.但由于某些原因我没有在列表中看到它,我无法访问它.事实上,我在列表中看不到任何布局.

为什么会发生这种情况?如何解决?

android android-arrayadapter android-layout layout-inflater custom-adapter

4
推荐指数
1
解决办法
5339
查看次数

导航抽屉定制适配器

我有一个工作的导航抽屉,使用文档中ArrayAdapter所示.我想为每个导航抽屉项设置图标,所以我需要创建一个自定义适配器来使用,但我不确定如何做到这一点.我在下面运行而不会崩溃应用程序,但导航抽屉打开空,没有任何内容.你能帮帮我吗?提前致谢!ImageView

到目前为止我为自定义适配器做了什么:

public class CustomAdapter extends ArrayAdapter
{
    private final Context context;

    public CustomAdapter(Context context)
    {
       super(context, R.layout.drawer_list_item);
       this.context = context;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent)
    {
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        View v = inflater.inflate(R.layout.drawer_list_item, parent, false);
        TextView textViewHome = (TextView) v.findViewById(R.id.drawerHomeTextView);
        ImageView imageViewHome = (ImageView) v.findViewById(R.id.drawerHomeImage);
        TextView textViewList = (TextView) v.findViewById(R.id.drawerListTextView);
        ImageView imageViewList = (ImageView) v.findViewById(R.id.drawerListImage);

        return v;
    }
}
Run Code Online (Sandbox Code Playgroud)

设置抽屉MainActivity:

mDrawerList = (ListView) findViewById(R.id.leftDrawer);

mDrawerList.setAdapter(new CustomAdapter(this)); …
Run Code Online (Sandbox Code Playgroud)

android android-arrayadapter custom-adapter navigation-drawer

4
推荐指数
1
解决办法
8149
查看次数

Android Listview ArrayAdapter 具有两种布局

我对 Android 还很陌生。在下面的类中,从数据库中检索数据并显示在具有两种不同布局的 ListView 中。\n虽然它按预期工作,但问题是滚动不平滑,因为文本视图被一次又一次分配。我不知道如何让它们只分配一次。请有人帮我解决这个问题。\n提前致谢。我对代码表示歉意,我知道它看起来很糟糕。

\n\n
public class FragmentVerses extends ListFragment {\n\nTypeface font;\nViewHolder viewHolder = new ViewHolder();\nViewHolderHeader viewHolderHeader = new ViewHolderHeader();\nDatabaseHelper db;\n\npublic List<VersesModel> verses;\npublic List<ChapterModel> chapterName;\nArrayAdapter<VersesModel> adapter;\n\npublic FragmentVerses() {\n}\n\n@Nullable\n@Override\npublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {\n    View view = inflater.inflate(R.layout.verses_fragment, container, false);\n\n    db = new DatabaseHelper(getActivity());\n    try {\n        db.createDatabase();\n    } catch (IOException e) {\n        Toast.makeText(getActivity(), "Error Creating Database", Toast.LENGTH_LONG)\n                .show();\n    }\n\n    verses = db.getVerses(" WHERE " + getActivity().getIntent().getStringExtra(MainActivity.CONDITION));\n    chapterName = db.getChapter();\n    adapter = new MyListAdapter();\n    setListAdapter(adapter);\n    return view;\n}\n\nprivate …
Run Code Online (Sandbox Code Playgroud)

android listview android-arrayadapter

4
推荐指数
1
解决办法
3676
查看次数

如何使用Kotlin在片段中使用ArrayAdapter

我试图创建一个Spinner内部,Fragment但是在ArrayAdapter构造函数调用中出现错误。我不知道为什么,但是有红色下划线。除此之外,没有错误。当我在中使用相同功能ArrayAdapter时Activity,但在中使用时Fragment,则出现错误。

我的FirstFragment.kt:

class FirstFragment : Fragment() {

    private var mListener: OnFragmentInteractionListener? = null

    override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        // Inflate the layout for this fragment
        return inflater!!.inflate(R.layout.fragment_first, container, false)
    }

    override fun onViewCreated(view: View?, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

        /*Find the id of spinner*/
        val spinner = lol

        /*set an adapter with strings array*/
        spinner.adapter = ArrayAdapter(this, R.layout.support_simple_spinner_dropdown_item, resources.getStringArray(R.array.atoms)) as SpinnerAdapter? …
Run Code Online (Sandbox Code Playgroud)

android android-arrayadapter android-spinner kotlin

4
推荐指数
1
解决办法
4004
查看次数

更改一个 ViewHolder 项目也会影响其他项目

我有一个基于RecyclerView的简单 mp3 播放器。有一个Adapter和ViewHolder用于处理播放列表中的曲目。

public class TracksAdapter extends RecyclerView.Adapter<TracksAdapter.ViewHolder> {

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        View v = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.cell_playlist, parent, false);

        return new ViewHolder(v);
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {

        holder.trackName.setText("Track " + position);
    }

    @Override
    public int getItemCount() {

        return tracks.size();
    }

    class ViewHolder extends RecyclerView.ViewHolder {

        final TextView trackName;

        ViewHolder(View itemView) {

            super(itemView);

            trackName = itemView.findViewById(R.id.trackName);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我单击曲目时,我想更改播放列表中所选曲目的背景颜色。问题是当我为一个项目设置背景颜色时,它会影响播放列表中的每十个单元格。

例如,如果播放列表中有 100 首曲目,则将突出显示 …

java android android-arrayadapter android-recyclerview

4
推荐指数
1
解决办法
2511
查看次数