[英]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.