【发布时间】:2019-08-22 08:53:33
【问题描述】:
我有一个 ArrayList 项目,每个项目包含 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;
}
}
【问题讨论】:
-
如果
List接口可行,为什么不继续使用呢?或者甚至更好地迁移到回收站视图。 See here -
您的代码与此代码路径中的代码几乎完全相同,只是它使用
getItem而不是成员列表变量。我不认为这种变化会导致这样的问题。您确定对象已正确分配和读取吗? guides.codepath.com/android/… -
我刚改成getItem来匹配codepath,还是不行:(
标签: java android listview arraylist