Android Listview每个屏幕显示多个项目

时间:2013-05-22 11:39:27

标签: android json listview

我创建了一个简单的应用程序,它将搜索词发送到php脚本,根据搜索词读取该php脚本生成的json响应,处理json响应并在listview中加载json节点值。一切顺利,搜索完成,json被处理,值被加载到listview中。

我对listview只有一个问题:每个项目都在不同的屏幕上。

这是我的带有listview的xml,名为listview1.xml:

<LinearLayout 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:background="@drawable/background"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_vertical|center_horizontal"
        android:text="@string/app_mresults"
        android:textColor="@color/text_color" />

    <ListView
        android:id="@android:id/list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        tools:listitem="@android:layout/simple_list_item_1" >
    </ListView>

</LinearLayout>

这是每个项目的xml,名为listview1row.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/background"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/ref_pnr"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/ref_partnumber"
        android:textColor="@color/text_color" />

    <TextView
        android:id="@+id/ref_pname"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/ref_part"
        android:textColor="@color/text_color" />

    <TextView
        android:id="@+id/ref_supp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/ref_supplier"
        android:textColor="@color/text_color" />

    <TextView
        android:id="@+id/ref_avail"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/ref_available"
        android:textColor="@color/text_color" />
</LinearLayout>

我做错了什么?我玩过布局宽度和高度以及listview的布局,什么都没有。我必须使用宽度和高度的特定组合吗? 我在一些网站上查看了一些listview教程,从那里复制了布局细节,但仍然没有。我查看了json响应,它不包含任何分隔线或回车。

编辑:下面是我为ListView设置适配器的部分。

protected void onPostExecute(String file_url) {
    // dismiss the dialog after getting all products
    pDialog.dismiss();
    // updating UI from Background Thread
    runOnUiThread(new Runnable() {
        public void run() {
            /**
             * Updating parsed JSON data into ListView
             * */
            ListAdapter adapter = new SimpleAdapter(
                    Reference2.this, productsList,
                    R.layout.activity_reference3, new String[] { TAG_PNR,
                            TAG_PNAME, TAG_PSUPP, TAG_PAVAIL},
                    new int[] { R.id.ref_pnr, R.id.ref_pname, R.id.ref_supp, R.id.ref_avail });
            // updating listview
            setListAdapter(adapter);
        }
    });

}

3 个答案:

答案 0 :(得分:0)

我认为,因为您正在使用ListView,所以您应该查看LayoutInflater来加载列表值。

以下是如何使用LayoutInflater实现它的示例:http://www.mysamplecode.com/2011/10/android-dynamic-layout-using-xml-add.html

答案 1 :(得分:0)

由于您在列表项中使用linearLayout,因此请根据需要对项目使用layout_weight属性。

答案 2 :(得分:0)

我终于找到了问题所在。 我使用的是android:background =“@ drawable / background”。一旦删除,一切都按预期工作。 当我用手重建listview1row.xml而不是使用可视化编辑器时,我遇到了这个。

谢谢大家的答案和帮助!