0

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

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

这是我的带有 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>

我究竟做错了什么?我玩过布局宽度和高度以及列表视图的布局,什么都没有。我必须使用宽度和高度的特定组合吗?我查看了一些网站上的一些列表视图教程,从那里复制了布局细节,但仍然一无所获。我查看了 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);
        }
    });

}
4

3 回答 3

0

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

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

于 2013-05-22T11:42:16.887 回答
0

我终于找到了问题所在。我正在使用 android:background="@drawable/background"。删除后,一切正常。我在手动重建 listview1row.xml 而不是使用可视化编辑器时遇到了这个问题。

谢谢大家的回答和帮助!

于 2013-05-24T12:21:43.070 回答
0

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

于 2013-05-22T12:11:11.487 回答