2011-02-11 2 views
2

CursorAdapter 클래스의 하위 항목과 모든 항목에 두 개의 TextView가있는 ListView가 있습니다. 하나는 텍스트를 들고 다른 하나는 숫자를 들고 있습니다.커서의 열 값에 따라 ListView 항목의 요소를 숨 깁니다.

텍스트는 하나의 커서 열에서 가져온 것이고 다른 수에서 가져온 것입니다. 나는 그것이 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 값을 기록합니다. 항상 올바른 값입니다. 문제가 재현되지

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

을 :이 같은 if 문을 주석 항상 count에 텍스트를 할당하면

또한 내가,났습니다.

답변

2

나는 당신의 문제가 관련이 있다고 생각한다. taskCound>0 보기가 재사용되고 있기 때문에 count.setVisibility(View.Visible)을 지정해야한다. 따라서 각 경우에 대해 값을 정의해야합니다.

도움이 되길 바랍니다.

+0

감사합니다. 작동합니다. – Olegas