簡體   English   中英

如何通過自定義適配器將項目的ArrayList填充到ListView?

[英]How to populate an ArrayList of items to ListView through a custom adapter?

我有一個ArrayList項目,每個項目包含2個字符串和1個按鈕。 當我使用列表存儲項目時,它運行良好。 在我更改為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;
        }
    }
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);
}

您正在實例化一個新的ArrayList ,它開始為空,然后嘗試遍歷該空列表,並且for循環不會運行。

如果只需要數字列表,請嘗試以下操作:

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);
}

沒有數據,如何生成列表項。

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);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM