0

使用 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);
4

2 回答 2

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;
    }
}
于 2013-11-14T21:43:48.333 回答
0

每个列表只能有 1 个适配器,因此当您setListAdapter第二次调用时,第一个将被覆盖。您应该使用单个适配器和单行布局,将这两个项目映射到该布局中的不同字段。

于 2013-11-14T21:39:21.937 回答