我很难理解这应该如何运作。我有一个方法getAllNotes()
在 DatabaseHandler类中返回 ArrayList ,当我尝试循环遍历 ArrayList 时,它正常工作此: -
for (Note note : notes) {
String log = "Id: " + note.getID() + " ,Title: " + note.getTitle() + " ,Description: " + note.getDescription();
Log.d("Notes: ", log);
}
这就是方法的样子
现在我需要将这些数据填充到列表视图中。经过一些搜索工作后,我发现我需要对数组中的每个对象(ID,标题,描述)使用 ArrayAdapter 和自定义布局和textview。
我无法完全理解 ArrayAdapter 应该如何运作。
1-为什么我需要将 setAdapter 定义为 listview ,我已经拥有自定义列表视图?
2- ArrayAdapter 要求资源ID为 TextView ,并且我的自定义列表视图布局中有多个textview !!
3-结果看起来很奇怪,我想我会有一个只有标题的简单列表,但这就是我得到的。
答案 0 :(得分:0)
创建自己的适配器类。
更改ArraList中的modeClass 在getView()
中更改布局快速示例:
private ArrayList<MenuModel> menuModels;
private Context context;
public MenuAdapter(ArrayList<MenuModel> menuModels, Context context) {
this.menuModels = menuModels;
this.context = context;
}
@Override
public int getCount() {
return menuModels.size();
}
@Override
public Object getItem(int position) {
return menuModels.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
MenuModel menuModel = menuModels.get(position);
ViewHolder viewHolder;
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.item_menu, parent, false);
viewHolder = new ViewHolder(convertView);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.textView.setText(menuModel.getTitle());
viewHolder.image.setImageResource(menuModel.getResourceIcon());
return convertView;
}
private static class ViewHolder {
ImageView image;
TextView textView;
public ViewHolder(View view) {
image = (ImageView) view.findViewById(R.id.);
textView = (TextView) view.findViewById(R.id.menuTitle);
}
}
}