为了账号安全,请及时绑定邮箱和手机立即绑定

如何通过自定义适配器将项的数组列表填充到列表视图?

如何通过自定义适配器将项的数组列表填充到列表视图?

潇潇雨雨 2022-09-14 10:14:58
我有一个项目的数组列表,每个项目包含2个字符串和1个按钮。当我使用 List 来存储项目时,它运行良好。在我更改为 ArrayList 以存储项目后,模拟器显示一个空屏幕。主要特性:    public class MainActivity extends AppCompatActivity {        public void mainlist(){            ArrayList<ListItem> items = new ArrayList<ListItem>();            for(int i = 0; i < items.size(); i++) {                int num = i + 1;                ListItem l = new ListItem("Item " + num, "sub item " + num);                items.add(l);            }            ListView el=(ListView)findViewById(R.id.eventlist);            MyArrayAdapter myArrayAdapter = new MyArrayAdapter(this, items);            el.setAdapter(myArrayAdapter);            myArrayAdapter.notifyDataSetChanged();        }        @Override        protected void onCreate(Bundle savedInstanceState) {            super.onCreate(savedInstanceState);            setContentView(R.layout.activity_main);            mainlist();        }    }适配器:    public class MyArrayAdapter extends ArrayAdapter<ListItem> {        private ArrayList<ListItem> items;        private Context context;        public MyArrayAdapter(Context context, ArrayList<ListItem> items) {            super(context, 0, items);            this.items = items;            this.context = context;        }        @Override        public View getView(int position, View convertView, ViewGroup parent){            ListItem item = items.get(position);            if(convertView==null) {                convertView = LayoutInflater.from(context).inflate(R.layout.listitem, parent, false);            }            TextView itemView = (TextView)convertView.findViewById(R.id.item);            TextView subItemView = (TextView)convertView.findViewById(R.id.sub_item);            itemView.setText(item.getName());            subItemView.setText(item.getDetail());            return convertView;        }    }
查看完整描述

2 回答

?
猛跑小猪

TA贡献1858条经验 获得超8个赞

ArrayList<ListItem> items = new ArrayList<ListItem>();

  for(int i = 0; i < items.size(); i++) {

  int num = i + 1;

  ListItem l = new ListItem("Item " + num, "sub item " + num);

  items.add(l);

}

您正在实例化一个以空开头的新内容,然后尝试循环访问空列表,并且您的 for 循环将不会运行。ArrayList


如果您只想要一个数字列表,请尝试以下操作:


ArrayList<ListItem> items = new ArrayList<ListItem>();

  for(int i = 0; i < 100; i++) {

  int num = i + 1;

  ListItem l = new ListItem("Item " + num, "sub item " + num);

  items.add(l);

}


查看完整回答
反对 回复 2022-09-14
?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

没有数据,如何生成列表项。


ArrayList<ListItem> items = new ArrayList<ListItem>();

        for(int i = 0; i < items.size()/*size is 0,loop is not running*/; i++) {...

插入一些数据,例如:


public void mainlist(){

        ArrayList<ListItem> items = new ArrayList<ListItem>();

        items.add(new ListItem("str1","str2"));

        ListView el=(ListView)findViewById(R.id.eventlist);

        MyArrayAdapter myArrayAdapter = new MyArrayAdapter(this, items);

        el.setAdapter(myArrayAdapter);

    }


查看完整回答
反对 回复 2022-09-14
  • 2 回答
  • 0 关注
  • 150 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号