我无法制作两个列表视图

时间:2015-07-25 13:49:08

标签: android database listview server

您好我想制作一个2垂直列表视图来显示来自服务器的一些数据。 但它收到了很多错误.. 请帮我解决。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
   <TextView android:id="@+id/data"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/data view"
    />

    <ListView
    android:id="@+id/date"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:stackFromBottom="true" >
 </ListView>
<ListView
    android:id="@+id/result"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:stackFromBottom="true" >
</ListView>
</LinearLayout>

我在追求的是什么:

http://i.stack.imgur.com/dZQNH.png

1 个答案:

答案 0 :(得分:0)

我会给你一个类似于你想要的答案,但你可以自由地调整它。 需要注意的是:现在主要使用RecyclerView,但是由于你要求一个ListView示例,我将给你一个ListView示例。

首先,您需要在主活动的布局xml文件中指定一个ListView。您还需要ListView中每个项目的第二个布局。第二个布局将有两个TexView。第一个用于Date,第二个用于Result。最后,你需要一个适用于ListView的适配器,它负责对每个项目(列表)的展示进行充气,保存你的列表数据等。

以下是activity_main.xml布局示例。我添加了两个视图来模拟TextViews之间的界限:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="16dp"
    tools:context=".MainActivity">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/relativeLayout" >

       <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:text="Date"
            android:id="@+id/textViewDate"
            android:gravity="center"
            android:layout_toLeftOf="@+id/view2"
            android:layout_toStartOf="@+id/view2"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true" />

        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="@android:color/darker_gray"
            android:id="@+id/view1"
            android:layout_alignBottom="@+id/textViewDate" />

        <View
            android:layout_width="1dp"
            android:layout_height="match_parent"
            android:background="@android:color/darker_gray"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:id="@+id/view2"
            android:layout_alignBottom="@+id/textViewDate" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:text="Result"
            android:id="@+id/textViewResult"
            android:gravity="center"
            android:layout_alignParentTop="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true"
            android:layout_toRightOf="@+id/view2"
            android:layout_toEndOf="@+id/view2" />

    </RelativeLayout>

    <ListView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/listView"
        android:layout_below="@+id/relativeLayout">


    </ListView>

</RelativeLayout>

列表中每个项目的list_item.xml布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="Date"
        android:id="@+id/textViewDate"
        android:gravity="center"
        android:layout_toLeftOf="@+id/view"
        android:layout_toStartOf="@+id/view"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <View
        android:layout_width="1dp"
        android:layout_height="match_parent"
        android:background="@android:color/darker_gray"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:id="@+id/view"
        android:layout_alignBottom="@+id/textViewDate" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="Result"
        android:id="@+id/textViewResult"
        android:gravity="center"
        android:layout_alignParentTop="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:layout_toRightOf="@+id/view"
        android:layout_toEndOf="@+id/view"
        android:layout_alignBottom="@+id/textViewDate" />

</RelativeLayout>

然后是包含日期和结果的自定义项目的类。

public class MyItem {
    public GregorianCalendar date;
    public String result;

    public MyItem(GregorianCalendar date, String result){
        this.date = date;
        this.result = result;
    }
}

和适配器(这里是ArrayAdapter):

public class MyAdapter extends ArrayAdapter<MyItem> {

    private final Context mContext;
    private MyItem[] mItems;

    public MyAdapter(Context context, MyItem[] items) {
        super(context, -1, items);
        mContext = context;
        mItems = items;
    }

    @Override
    public View getView(int position,View view,ViewGroup parent) {
        View rowView = view;
        if (rowView == null) {
            LayoutInflater inflater = (LayoutInflater) mContext
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            rowView = inflater.inflate(R.layout.list_item, null, true);

        }

        TextView textViewDate = (TextView) rowView.findViewById(R.id.textViewDate);
        TextView textViewResult = (TextView) rowView.findViewById(R.id.textViewResult);

        textViewDate.setText(mItems[position].date.getTime().toString());
        textViewResult.setText(mItems[position].result);
        return rowView;
    }
}

最后在您的活动中

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MyItem[] items = {new MyItem(new GregorianCalendar(2014, 1, 1), "Ok"),
                          new MyItem(new GregorianCalendar(2014, 2, 3), "Not ok"),
                          new MyItem(new GregorianCalendar(2015, 3, 3), "Ok"),
                          new MyItem(new GregorianCalendar(2015, 5, 7), "Warning"),
                          new MyItem(new GregorianCalendar(2016, 7, 1), "Ok")};

        MyAdapter adapter = new MyAdapter(this, items);

        ListView listView = (ListView) findViewById(R.id.listView);
        listView.setAdapter(adapter);
    }