2011-02-11 50 views
2

我有一個CursorAdapter類的子項和一個ListView,每個項目有兩個TextViews。一個拿着一個文本,另一個拿着一個數字。根據遊標的列值隱藏ListView項目的元素

文本來自一個Cursor列,而來自另一個Cursor列的數字。我想隱藏號碼,如果它等於0

我的列表項的看法是:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:padding="10dp"> 

    <TextView 
     android:background="@drawable/task_count_indicator" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:layout_alignParentRight="true" 
     android:layout_gravity="center_vertical" 
     android:textColor="@color/white" 
     android:id="@+id/txtTaskCount" /> 

    <TextView 
     android:layout_height="fill_parent" 
     android:layout_width="fill_parent" 
     android:ellipsize="marquee" 
     android:textSize="18sp" 
     android:layout_alignParentLeft="true" 
     android:layout_gravity="center_vertical" 
     android:id="@+id/placeItemName"/> 

</RelativeLayout> 

我的適配器代碼:

@Override 
    public View newView(Context context, Cursor cursor, ViewGroup viewGroup) { 
     return LayoutInflater.from(context).inflate(R.layout.places_list_item, viewGroup, false); 
    } 


    @Override 
    public void bindView(View view, Context context, Cursor cursor) { 

     int taskCount = cursor.get...// get to know it... 

     TextView name = (TextView) view.findViewById(R.id.placeItemName); 
     name.setText(
       cursor.getString(
         cursor.getColumnIndexOrThrow(...))); 

     TextView count = (TextView)view.findViewById(R.id.txtTaskCount); 
     if(taskCount > 0) 
      count.setText(Integer.toString(taskCount)); 
     else 
      count.setVisibility(View.GONE); 
    } 

的問題是什麼,有時每一個觀點,即持有的數字被隱藏,或者使用不正確的值(文本內容始終是正確的)。我記錄了taskCount的值 - 它總是正確的。

而且我注意到,如果我要是聲明發表評論的,並指定文本count總是這樣:

//if(taskCount > 0) 
     count.setText(Integer.toString(taskCount)); 
    //else 
     //count.setVisibility(View.GONE); 

問題沒有重現。

回答

2

我認爲你的問題與案例有關taskCound>0 你應該需要指定count.setVisibility(View.Visible),因爲視圖正在被重用。所以一定要爲每個案例定義你的值。

希望有幫助

+0

太好了,謝謝,它的工作原理。 – Olegas 2011-02-11 20:01:43