如何在同一行中有两个项目

时间:2013-11-14 21:20:10

标签: java android android-listview

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

2 个答案:

答案 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时,第一个被覆盖。您应该使用单个适配器和单行布局,将两个项目映射到该布局中的不同字段。