【发布时间】:2010-11-10 10:44:09
【问题描述】:
我在显示列表视图时遇到问题。我有选项卡式活动,其中一个包含列表视图。这是代码:
结果.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:id="@+id/Layout_result"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/papero3">
<ListView
android:id="@+id/resultListView"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:text="@string/main_no_items"
android:id="@+id/empty"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</TextView>
</ListView>
</LinearLayout>
list_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/listItem"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingLeft="10px"
android:paddingRight="10px"
android:paddingTop="5px"
android:paddingBottom="5px">
<TextView android:text="This is object's name"
android:id="@+id/result_item_name_object"
android:layout_height="wrap_content"
android:singleLine="false"
android:gravity="left"
android:textSize="18sp" android:layout_width="260px">
</TextView>
<TextView android:text="null"
android:id="@+id/result_item_distance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="right"
android:textSize="15sp" android:paddingLeft="10px">
</TextView>
</LinearLayout>
主要代码:
ListView resultList = (ListView)findViewById(R.id.resultListView);
ItemAdapter m_adapter = new ItemAdapter(this, R.layout.list_item, itemsFound);
resultList.setAdapter(m_adapter);
viewItems = new Runnable(){
@Override
public void run() {
searchItems();
}
};
Thread thread = new Thread(null, viewItems, "Searching");
thread.start();
private class ItemAdapter extends ArrayAdapter<Item>{
private ArrayList<Item> items;
public ItemAdapter(Context context, int textViewResourceId,
ArrayList<Item> objects) {
super(context, textViewResourceId, objects);
this.items = objects;
}
public View getView(int position, View convertView, ViewGroup parent){
View v = convertView;
if(v == null){
LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.list_item, null);
}
Item item = (Item) items.get(position);
if (item != null){
TextView resName = (TextView) v.findViewById(R.id.result_item_name_object);
TextView resDistance = (TextView) v.findViewById(R.id.result_item_distance);
if (resName != null){
resName.setText(item.name);
}
if (resDistance != null){
resDistance.setText(item.distance);
}
}
return v;
}
}
private Runnable returnRes = new Runnable() {
@Override
public void run() {
if(itemsFound != null && itemsFound.size() > 0){
m_adapter.notifyDataSetChanged();
int count = itemsFound.size();
for(int i=0; i < count; i++)
m_adapter.add(itemsFound.get(i));
}
m_ProgressDialog.dismiss();
m_adapter.notifyDataSetChanged();
}
};
首先我在 result.xml 布局窗口中得到“UnsupportedOperationException: addView(View, LayoutParams) is not supported in AdapterView”,但是当我从 resut.xml 中的 listview 中清理 textview 时,该问题消失了,但出现了新问题:
11-10 10:39:42.623: ERROR/AndroidRuntime(720): android.content.res.Resources$NotFoundException: String resource ID #0x304
11-10 10:39:42.623: ERROR/AndroidRuntime(720): at android.content.res.Resources.getText(Resources.java:200)
/*and so on*/
【问题讨论】:
-
<TextView>在<ListView>内?都与fill_parent。这行得通吗? -
是的,它不起作用。顺便说一句,我发现 stackoverflow.com/questions/4084476/… 我不能简单地将 textview 添加到 listview,但是有一个教程可以完成 softwarepassion.com/… 但它只是问题的一半
-
但在我看来 textview 是必要的,并且在尝试访问此 textview 时会出现“android.content.res.Resources$NotFoundException: String resource ID”
标签: android listview adapter listadapter