2016-12-31 8 views
0

나는 잘 작동하고 모든 데이터를 표시하는 간단한 커서 어댑터가 있습니다. 내 청취자가 클릭에 색상을 변경 :안드로이드 SimpleCursorAdapter는 스크롤에 스타일링 유지

listViewM.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
       public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
        boolean exists = false; 
        TextView item = (TextView) view.findViewById(R.id.r_lv_name); 
        String selectedAnswer = item.getText().toString(); 
        MultiSelection multiSelection = new MultiSelection((int) id, selectedAnswer); 

        for (MultiSelection mm : mMultiSelectionsArray) { 
         if (id == mm.getId()) { 
          mMultiSelectionsArray.remove(mm); 
          exists = true; 
          break; 
         } else { 
          exists = false; 
         } 
        } 

        if (!exists) { 

         mMultiSelectionsArray.add(multiSelection); 
         item.setTextColor(Color.parseColor("#2EFE2E")); 
        } else { 

         mMultiSelectionsArray.remove(multiSelection); 
         item.setTextColor(Color.parseColor("#000000")); 
        } 

       } 
      }); 

이제 스크롤에 어댑터 뷰를 재활용하고 선택으로 (색상을 추가하여) 새 항목을 표시합니다. 어떻게 든 상태를 유지 한 다음 뷰 생성에 적용해야하지만 3 일 후에보고 포기해야합니다. 아무도 도와 줄 수 있습니까?

답변

1

시도가 사용자 정의 어댑터를 사용하려면, 뭔가 같은 :

public class CustomSimpleCursorAdapter extends SimpleCursorAdapter { 

    public CustomSimpleCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to, int flags) { 
     super(context, layout, c, from, to, flags); 
    } 

    @Override 
    public View newView(Context context, Cursor cursor, ViewGroup parent) { 
     return super.newView(context, cursor, parent); 
    } 

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

     //HERE you can set the correct color for each item 

     TextView item = (TextView) view.findViewById(R.id.r_lv_name); 
     boolean exists = //check is item is selected 
     if (!exists) { 
      item.setTextColor(Color.parseColor("#2EFE2E")); 
     } else { 
      item.setTextColor(Color.parseColor("#000000")); 
     } 
    } 
} 
+0

그래 내가 이미 이런 짓을하지만 올바른 접근 방식 - 내가 대신 어댑터의 메인 쓰레드에서 그것을 확인하려고 - 지금 나를 위해 일하고있어 - 감사합니다 – sziszu