将两个不同的ArrayList附加到一个适配器中

时间:2011-10-05 05:12:50

标签: android

listview想要将两个不同的arraylist合并到一个适配器中。 我尝试使用getView()方法的位置值,但它没有向listview显示正确的数据,首先它显示来自arrayList的数据,在完成第二个arraylist后应该开始显示。

ArrayList<A> list1 = new  ArrayList<A>;
ArrayList<B> list2 = new ArrayList<B>;

我想将这两个列表添加到一个adapter.first我需要在list1之后添加list1来自list2的完整数据是display.i尝试使用getView()方法的位置变量但它没有向我显示正确的数据。

如何实现这个目标?

2 个答案:

答案 0 :(得分:2)

这可以通过将两个列表添加到一个列表中并将此公共列表设置为适配器来实现。

ArrayList<A> list1 = new  ArrayList<A>();
ArrayList<Object> object = new ArrayList<Object>();
list1.add(new A());
object.add(new A());
ArrayList<B> list2 = new ArrayList<B>();
list2.add(new B());
object.add(new B());
object.add(new B());
listadapter mAdapterSeeLatest ;
mAdapterSeeLatest = new listadapter (getParent(),R.layout.help_row,object); 
mCheckInListView.setAdapter(mAdapterSeeLatest);
private class listadapter extends ArrayAdapter {

    ArrayList<Object> ListObject;
    int srNumber = 1;
    public listadapter (Context context, int textViewResourceId,
                ArrayList<Object> objects) {
        super(context, textViewResourceId, objects);
        ListObject = objects;
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        View v = convertView;
        if (v == null)
        {
            LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = vi.inflate(R.layout.row, null);    
        } 
        if(ListObject.get(position) instanceof A)
        {   

        }
        else if(ListObject.get(position) instanceof B)
        {
        }
    }

//now set this object ArrayList() into the List.

答案 1 :(得分:1)

难道你不能把这两个组合成一个ArrayList吗?

List<String> newList = new ArrayList<String>(listOne);
newList.addAll(listTwo);


请参阅此主题:How do I join two lists in Java?