Java 关于android setlistadapter和合并两个.xml布局的建议

Java 关于android setlistadapter和合并两个.xml布局的建议,java,android,xml,android-layout,listadapter,Java,Android,Xml,Android Layout,Listadapter,我正在使用两个列表适配器,如下面的代码所示。resultList和resultList2用newarraylist()初始化 <TextView android:id="@+id/name" android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingTop="6dip" android:paddingLeft="6dip" a

我正在使用两个列表适配器,如下面的代码所示。resultList和resultList2用
newarraylist()初始化

 <TextView
    android:id="@+id/name"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:paddingTop="6dip"
    android:paddingLeft="6dip"
    android:textSize="17sp"
    android:textStyle="bold" />

<TextView
    android:id="@+id/address"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:paddingTop="6dip"
    android:paddingLeft="6dip"
    android:textSize="17sp"
    android:textStyle="bold" />

<TextView
    android:id="@+id/email"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:paddingTop="6dip"
    android:paddingLeft="6dip"
    android:textSize="17sp"
    android:textStyle="bold" />
我有两个名为list_item1.xml和list_item2.xml的布局。

//list_item.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:orientation="vertical" >

     <TextView
        android:id="@+id/Id"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:paddingTop="6dip"
        android:paddingLeft="6dip"
        android:textSize="17sp"
        android:textStyle="bold"
        android:descendantFocusability="blocksDescendants"
        android:visibility="gone"/><!--android:visibility="gone"  --> 

    <TextView
        android:id="@+id/fruit"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:paddingTop="6dip"
        android:paddingLeft="6dip"
        android:textSize="17sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/species"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:paddingTop="6dip"
        android:paddingLeft="6dip"
        android:textSize="17sp"
        android:textStyle="bold" />
</LinearLayout>
 <TextView
    android:id="@+id/name"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:paddingTop="6dip"
    android:paddingLeft="6dip"
    android:textSize="17sp"
    android:textStyle="bold" />

<TextView
    android:id="@+id/address"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:paddingTop="6dip"
    android:paddingLeft="6dip"
    android:textSize="17sp"
    android:textStyle="bold" />

<TextView
    android:id="@+id/email"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:paddingTop="6dip"
    android:paddingLeft="6dip"
    android:textSize="17sp"
    android:textStyle="bold" />

您不需要为尝试实现的任何目标合并list_item1和resultList2布局。与其扩展ListActivity或ListFragment,不如将普通activity和setContentView与xml中有两个ListView的布局一起使用,如下所示

 <TextView
    android:id="@+id/name"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:paddingTop="6dip"
    android:paddingLeft="6dip"
    android:textSize="17sp"
    android:textStyle="bold" />

<TextView
    android:id="@+id/address"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:paddingTop="6dip"
    android:paddingLeft="6dip"
    android:textSize="17sp"
    android:textStyle="bold" />

<TextView
    android:id="@+id/email"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:paddingTop="6dip"
    android:paddingLeft="6dip"
    android:textSize="17sp"
    android:textStyle="bold" />
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical" >

<ListView
    android:id="@+id/listView1"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1" >
</ListView>

<ListView
    android:id="@+id/listView2"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1" >
</ListView>

我不确定这是否符合您的要求。如果不符合,很抱歉。我希望这会有所帮助。

扩展
ListAdapter
,并在适配器的方法中使用所需的布局将每行充气。对于ListView中的每一行(或者适配器中的记录,如果您希望是特定的话)调用此方法一次。它用于为每个记录设置(或者,嗯,膨胀)视图,并执行诸如设置
TextView
ImageView
、隐藏每行不必要的组件等操作。我自己没有用两种不同的布局资源尝试过这一点,但我认为可以用这种方法完成

 <TextView
    android:id="@+id/name"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:paddingTop="6dip"
    android:paddingLeft="6dip"
    android:textSize="17sp"
    android:textStyle="bold" />

<TextView
    android:id="@+id/address"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:paddingTop="6dip"
    android:paddingLeft="6dip"
    android:textSize="17sp"
    android:textStyle="bold" />

<TextView
    android:id="@+id/email"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:paddingTop="6dip"
    android:paddingLeft="6dip"
    android:textSize="17sp"
    android:textStyle="bold" />
public class CustomListAdapter extends ArrayAdapter<CustomObject> {

    private Context context;
    private int layoutResourceId_1;
    private int layoutResourceId_2
    private List<CustomObject> list;

    public CustomListAdapter(Context context, int layoutResourceId_1, int layoutResourceId_2, List<CustomObject> list) {
        super(context, layoutResourceId_1, list);
        this.context = context;
        this.layoutResourceId_1 = layoutResourceId_1;
        this.layoutResourceId_2 = layoutResourceId_2;
        this.list = list;
    }

    ...

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View row = convertView;

        LayoutInflater layoutInflater = ((Activity) context).getLayoutInflater();

        if(condition_layout_1()) {
            row = layoutInflater.inflate(layoutResourceId_1, parent, false);
            // Use a holder to prepare item
            ...
        } else {
            row = layoutInflater.inflate(layoutResourceId_2, parent, false);
            // Use a holder to prepare item
            ...
        }

        return row;
    }

    ...
}
公共类CustomListAdapter扩展了ArrayAdapter{
私人语境;
私人内部布局资源1;
私人内部布局资源2
私人名单;
公共CustomListAdapter(上下文上下文、int-layoutResourceId_1、int-layoutResourceId_2、列表){
超级(上下文、布局资源1、列表);
this.context=上下文;
this.layoutResourceId_1=layoutResourceId_1;
this.layoutResourceId_2=layoutResourceId_2;
this.list=列表;
}
...
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图行=转换视图;
LayoutInflater LayoutInflater=((活动)上下文)。getLayoutInflater();
如果(条件布局1()){
行=布局平坦。充气(布局资源1,父项,false);
//使用支架准备物品
...
}否则{
行=布局平坦。充气(布局资源2,父级,假);
//使用支架准备物品
...
}
返回行;
}
...
}

对两个不同的适配器使用两个不同的ListView。对一个适配器使用相同的ListView(只有一个ListView),在适配器内部使用项的类型,并调用每个项hi、dhaval和hi bmarqes所需的布局。我已经编辑了我的问题。请看一看,谢谢。可能是重复的嗨,朵拉。谢谢你的回复,我真的很感激我试着用这种方法,但这不是我想要的结果。再次谢谢。嗨,抽筋。我使用了与上述解决方案相同的概念。这是工作!谢谢,没问题。如果有帮助的话,接受这个答案。祝你好运