我可以在单个列表视图中添加不同的布局吗?

时间:2015-07-19 05:24:28

标签: android arrays listview

我有一个listview和一个数组适配器。我想传递一个数组并创建一个列表。到现在为止还挺好。现在我要做的下一件事是在已创建的列表下面添加另一个数组资源。我无法将两个阵列连接在一起,因为这两个阵列应该有不同的布局。有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:1)

是的,你可以

首先,您需要创建一个扩展ArrayAdapter的新类并覆盖getview方法

 class MyAdapter extends ArrayAdapter {





public MyAdapter(Context context,ArrayList<MyClass> myarray) {
    super(context,R.layout.yourlayout,myarray);


}



    @Override
public View getView(int position, View convertView, ViewGroup parent) {
 /*this is also called when creating for the first time or once any view (row) is visible again    */               


View view=null;
MyClass object=(MyClass)getItem(position);

//if true than choose the first layout
if (object.layout1 == true) {

view=LayoutInflater.from(getContext()).inflate(R.layout.yourlayout1,  
parent, false);
}else if(object.layout2==true){
view=LayoutInflater.from(getContext()).inflate(R.layout.yourlayout2,  
parent, false);

}



}

现在你应该有一个类,例如名为MyClass contains

public class MyClass{
 public boolean layout1;
 public boolean layout2;
 }

所以当你将项添加到适配器中时,添加一个MyClass的对象,你所要做的就是将boolean layout1和layout2的值设置为true或false,以便知道要选择哪个布局

而不是将新项目添加到adpater中的示例,您希望它选择layout2:

      MyClass object=new MyClass();
     object.layout1=false;
     object.layout2=true;
     //setting  listview adpater 
     MyListView.setAdapter(new MyAdapter(this,new ArrayList<MyClass>()));

     Myadapter.add((Object)object);