创建多个列表项视图

时间:2014-09-02 16:45:16

标签: java android xml android-layout sdk

我是android开发世界的新手

我的应用程序中有一个MainActivity,其中显示了来自外部JSON文件的团队列表

所以我有activity_main.xml布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">
    <!-- Main ListView 
         Always give id value as list(@android:id/list)
    -->

     <Button
     android:layout_height="wrap_content"
     android:layout_width="fill_parent"
     android:text="@string/schedules"
     android:onClick="getSchedules" />

    <ListView
        android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>

</LinearLayout>

我有list_item.xml布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:padding="10dp"
    android:paddingLeft="10dp"
    android:paddingRight="10dp" >

    <!-- Name Label -->

    <TextView
        android:id="@+id/name"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:paddingBottom="2dip"
        android:paddingTop="6dip"
        android:textColor="#43bd00"
        android:textSize="16sp"
        android:textStyle="bold" />

    <!-- Email label -->


    <!-- Mobile number label -->
    <TextView
        android:id="@+id/alias"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="left"
        android:text="Mobile: "
        android:textColor="#5d5d5d"
        android:textStyle="bold" />

     <TextView
        android:id="@+id/city"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:paddingBottom="2dip"
        android:textColor="#acacac" />

</LinearLayout>

(我按照教程来做..)

现在,我创建了另一个活动,即SchedulesActivity,其中我使用不同的数据(不同的字段)执行完全相同的操作。所以我创建了activity_schedules.xml布局:

<?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:orientation="vertical" >

    <Button
     android:layout_height="wrap_content"
     android:layout_width="fill_parent"
     android:text="@string/teams"
     android:onClick="getTeams" />

    <ListView
        android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>

</LinearLayout>

现在,我需要创建另一个list_item.xml来显示其他数据,但它已经存在。如何创建不同的list_item布局。

第二个问题:在activity_schedules.xml中,每当我尝试将ListView的id从列表更改为任何其他id时,我都会收到错误&#34;找不到与给定名称相匹配的来源&#34;

谢谢

2 个答案:

答案 0 :(得分:1)

  1. list_item,如果你想显示相同类型的数据,我的意思是,如果你创建的第一个list_item和你要创建的第二个list_item携带相同的字段,如果是,则不需要再创建一个,你可以使用相同的如果没有你可以用不同的名字创建一个完全不同的list_item,那么list_item会通过膨胀你想要展示的地方

  2. 您使用id作为android:id&#34; @android:id / list&#34;的activity_Schedules.xml这意味着你是来自Android系统的现有ID。如果你想创建一个不同的id尝试这种方式&#34; android:id&#34; somename&#34;

答案 1 :(得分:1)

在自定义适配器中,您可以指定将作为视图膨胀的布局的ID。

您可以创建两个不同的Adapter并在每个中设置所需的ID,或者您可以通过Adapter构造函数传递您需要扩充的布局的ID。

private int _idLayout;

public ListAdapter(Context context, int idLayout) {
    super(context, idLayout);
    _idLayout = idLayout;
}

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

    if(convertView==null){
        LayoutInflater inflater = ((Activity) context).getLayoutInflater();
        convertView = inflater.inflate(_idLayout, parent, false);
    }

    return convertView;
}