2011-11-11 4 views
0

각 행에 ListView을 가지고 있습니다. 일부 객체 (대부분 TextViews)가 포함 된 LinearLayout이 있습니다.SimpleCursorAdapter 값을 제거하십시오.

이 ListView 나는 커서에서 동적으로 채 웁니다. 이 커서에는 하나의 값이 true 또는 false입니다.

값 false 인 라인을 숨기거나 클릭 할 수 없게 만들고 싶습니다. 이 코드를 시도하지만이 답변이 암시하는 것 같다

어댑터

http://developer.android.com/reference/android/widget/BaseAdapter.html#isEnabled(int)에

public void contentProviderInitialized(final Cursor cursor) { 

    SimpleCursorAdapter commonTickets = new SimpleCursorAdapter(MyClass.this, 
     R.layout.row_ticketing, cursor, new String[] {"price", "productName", "stopName" }, 
     new int[] { R.id.ticketing_price, R.id.ticketing_product, R.id.ticketing_stop_name } 
    ) { 
     @Override 
     public void bindView(View view, Context context, Cursor cursor) { 
      String enabledStr = cursor.getString(cursor.getColumnIndex("enabled")); 
      String product = cursor.getString(cursor.getColumnIndex("productName")); 
      boolean enabled = Boolean.parseBoolean(enabledStr); 
      LinearLayout ticketingRow = (LinearLayout) view.findViewById(R.id.ticketing_row); 
      if (enabled) { 
       ticketingRow.setEnabled(true); 
      } else { 
       ticketingRow.setEnabled(false); 
      } 
      super.bindView(view, context, cursor); 
     }; 
     MyClass.this.ticketing_list_view.setAdapter(commonTickets); 
    } 
} 
+0

전체 예외와 StackTrace를 게시하십시오. –

+0

나는 예외에 관해 말하지 않았다. 문제는 false 값을 가진 행을 클릭 할 수 있다는 것입니다. – tinti

답변

1

재정의 IsEnabled를 작동하지 않습니다. 커서에서 movetoposition을 사용하십시오. 성능이 좋지 않은 것처럼 들리므로 숫자 위치를 기준으로 true/false 값의 캐싱을 원할 수 있습니다. 그것을 밖으로 시도하십시오. 그것이 어떻게되는지보십시오. 캐싱은 낭비 일 수 있습니다.

관련 문제