【问题标题】:Android: Custom ListAdapterAndroid:自定义 ListAdapter
【发布时间】: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*/

【问题讨论】:

  • &lt;TextView&gt;&lt;ListView&gt; 内?都与fill_parent。这行得通吗?
  • 是的,它不起作用。顺便说一句,我发现 stackoverflow.com/questions/4084476/… 我不能简单地将 textview 添加到 listview,但是有一个教程可以完成 softwarepassion.com/… 但它只是问题的一半
  • 但在我看来 textview 是必要的,并且在尝试访问此 textview 时会出现“android.content.res.Resources$NotFoundException: String resource ID”

标签: android listview adapter listadapter


【解决方案1】:

您是否在 strings.xml 中定义了字符串 main_no_item ?

【讨论】:

    【解决方案2】:

    已修复 :) 不要忘记 (textview).settext() 需要资源 id,所以不要忘记将数字数据转换为字符串 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多