2011-10-05 63 views
1

listview想将两个不同的arraylist合并到一个适配器中。 我尝试使用getView()方法的位置值,但它不显示正确的数据listview首先它显示数据从一个arrayList完成第二个arraylist应该开始显示。将两个不同的ArrayList添加到一个adder中

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

我想补充这两个列表成为一个adapter.first我需要列表1之后添加列表1是从列表2完整的数据使用getView()方法的位置可变display.i尝试,但它不是我显示正确的数据。

如何实现这个?

回答

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. 
+0

它为我工作。谢谢你的解决方案megha ... – praveenb

1

难道你不能只将这两个组合成一个ArrayList?

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


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

相关问题