使用android studio我正在尝试创建一个自定义ListView
,其中我在同一行中有两个项目。我从一个java类中获取一个项目,从另一个java类中获取第二个项目,但它不起作用。这就是我所拥有的:
ArrayAdapter<RSSItem> adapter = new ArrayAdapter<RSSItem>(this,
R.layout.list_item,myRssFeed.getList());
setListAdapter(adapter);
ArrayAdapter<RSSItem2> adapter = new ArrayAdapter<RSSItem2>(this,
R.layout.list_item2,myRssFeed.getSubList());
setListAdapter(adapter);
答案 0 :(得分:2)
每次调用setListAdapter()
时,您都会使用新适配器完全替换ListView的适配器(以及内容)。
要创建以更复杂的方式显示内容的自定义ListView(例如,不仅仅是文本或使用更复杂的数据模型),您需要创建自己的BaseAdapter
实现。
除了BaseAdapter
之外,您还需要一个包含相应视图的布局文件,以显示这两个项目的信息。
此方案的BaseAdapter
实现可能如下所示:
public class MyCustomAdapter extends BaseAdapter {
private String[] mFirstItems;
private String[] mSecondItems;
Context mContext;
public MyCustomAdapter(String[] firstItems, String[] secondItems, Context context) {
mFirstItems = firstItems;
mSecondItems = secondItems;
mContext = context;
}
// Other required overridden methods
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.id.my_row_layout, parent, false);
// TODO set layout content
return layout;
}
}
答案 1 :(得分:0)
每个列表只能有1个适配器,因此当您第二次调用setListAdapter
时,第一个被覆盖。您应该使用单个适配器和单行布局,将两个项目映射到该布局中的不同字段。