我创建了一个简单的应用程序,它将搜索词发送到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);
}
});
}
答案 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而不是使用可视化编辑器时,我遇到了这个。
谢谢大家的答案和帮助!