【问题标题】:Implements ViewHolder on a ListView AndroidStudio在 ListView AndroidStudio 上实现 ViewHolder
【发布时间】:2016-06-08 21:46:53
【问题描述】:

我需要帮助来为我的 ListView 实现 ViewHolder。

...     
ListAdapter adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, array_spinner);//Inserisco le possibilita
                mylist = (ListView) findViewById(R.id.listView1);
                mylist.setAdapter(adapter);
                mylist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
...

有人可以帮我吗?

【问题讨论】:

    标签: android listview


    【解决方案1】:
        public class YourAdapter extends ArrayAdapter<String> {
    
        Context context;
        int layoutResourceId;
        String data[] = null;
    
        public YourAdapter(Context context, int layoutResourceId, String[] data) {
            super(context, layoutResourceId, data);
            this.layoutResourceId = layoutResourceId;
            this.context = context;
            this.data = data;
        }
    
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View row = convertView;
            ViewHolder holder = null;
    
            if(row == null)
            {
                LayoutInflater inflater = ((Activity)context).getLayoutInflater();
                row = inflater.inflate(layoutResourceId, parent, false);
    
                holder = new ViewHolder();
                holder.txtTitle = (TextView)row.findViewById(R.id.row_textview);
    
                row.setTag(holder);
            }
            else
            {
                holder = (ViewHolder)row.getTag();
            }
    
            String title = data[position];
            holder.txtTitle.setText(title);
    
            return row;
        }
    
        static class ViewHolder
        {
            TextView txtTitle;
        }
    }
    

    在你的活动中这样做:

       YourAdapter adapter = new YourAdapter<>(this,R.layout.your_custom_layout, your_string_array);
        mylist = (ListView) findViewById(R.id.listView1);
        mylist.setAdapter(adapter);
    

    【讨论】:

    • 感谢该代码,但它在 R.id.row_textview 上给了我错误。我需要在我的 xml 文件中添加什么?一个普通的 TextView 并称之为 row_textview?我需要把它放在xml文件的哪里?在列表视图下?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多