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