2010-02-14 2 views
0

ListActivity가 있는데 사용자 지정 CursorAdapter를 사용하고 있습니다. 나는 또한 체크 박스있어 목록의 각 항목에서 Listview에서 체크 된 CheckBox의 항목 검색

...

이제

당신이 그것을 누를 때 나는, 내 목록 화면 파마 버튼에있는,

그것은 모든 체크 박스를 찾아야한다 '체크'되고 항목에 대한 일부 작업을 수행합니다. 체크 박스는 '선택'됩니다.

체크 된 항목을 모두 검색하려면 어떻게해야합니까?

내가 포커스했던 : 거짓, 그래서 OnClickListener를 사용할 수 있지만 나도 몰라 어떻게 다음 이 .. 감사 멀리,

일부 코드 : 이 내 ListActivity 클래스에 있습니다

final String columns[] = new String[] { MyUsers.User._ID, 
       MyUsers.User.MSG, MyUsers.User.LOCATION }; 

      int[] to = new int[] { R.id.toptext, R.id.bottomtext,R.id.ChkBox, 
       R.id.Location}; 

      Uri myUri = Uri.parse("content://com.idan.datastorageprovider/users"); 

      Cursor cursor = getContentResolver().query(myUri, columns, null, null, null); 

      startManagingCursor(cursor); 

      ListCursorAdapter myCursorAdapter=new ListCursorAdapter(this,R.layout.listitem, cursor, columns, to); 

      this.setListAdapter(myCursorAdapter); 

이 내 사용자 정의 커서 어댑터 클래스입니다 :

public class ListCursorAdapter extends SimpleCursorAdapter 

{ 

     private Context context; 
    private int layout; 

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

     this.context = context; 

     this.layout = layout; 

    } 

    @Override 
    public View newView(Context context, Cursor cursor, ViewGroup parent) 
    { 

     Cursor c = getCursor(); 

     final LayoutInflater inflater = LayoutInflater.from(context); 
     View v = inflater.inflate(layout, parent, false); 
        return v; 
      } 

@Override 

    public void bindView(View v, Context context, Cursor c) 
    { 
     TextView topText = (TextView) v.findViewById(R.id.toptext); 
     if (topText != null) 
     { 
      topText.setText(""); 
     } 

     int nameCol = c.getColumnIndex(MyUsers.User.MSG); 
     String name = c.getString(nameCol); 
     TextView buttomTxt = (TextView) v.findViewById(R.id.bottomtext); 
     if (buttomTxt != null) 
     { 
      buttomTxt.setText("Message: "+name); 
     } 

     nameCol = c.getColumnIndex(MyUsers.User.LOCATION); 
     name = c.getString(nameCol); 
     TextView location = (TextView) v.findViewById(R.id.Location); 
     if (locationLinkTxt != null) 
     { 
      locationLinkTxt.setText(name); 
     } 

     } 
+0

코드를 게시하십시오 ... –

+0

사이에 필요한 코드를 잃어 버렸기 때문에 무엇을 게시해야하는지 모릅니다. 이해하지 못했던 것을 말해주십시오. 내가 가진 모든 listview, 각 항목에서 나는 또한 확인란을 가지고, listview는 CursorAdapter를 통해 데이터베이스에 바인딩됩니다. 나는 thire checkboxes status가 CHECKED 인 모든 항목을 검색하기 위해 버튼을 누르기를 원한다. 고마워, 레이. – rayman

답변

0
 //Modify to meet your needs 
     String[] from = new String[]{ YourDbAdapter.KEY_WORDS_ROWID, YourDbAdapter.KEY_WORDS_ROWID}; 
     int[] to = new int[]{ R.id.row_item_checkbox}; 

     mAdapter = new SimpleCursorAdapter(this, R.layout.row_item_with_checkbox, yourDbCursor, from, to); 


     mAdapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() { 

     @Override 
     public boolean setViewValue(View view, Cursor cursor, int columnIndex) { 


     if(view.getId() == R.id.myCheckbox) 
     { 

     CheckBox cb = (CheckBox) view; 
     cb.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 

      final long id = cursor.getLong(columnIndex); //Your row id 
           //You can do the necessary work here such as adding to an List or somehting 

      } 
     }); 


     return true; 
     } 

     return false; 
     } 


     }); 
+0

YOUR_DB_INTEX_HERE = ?? – rayman

+0

그리고 u가 DataBase 색인을 의미한다면, 나는 거기에 무엇을 놓아야 할까? 내 체크 박스 상태가 내 데이터베이스에 어떻게 연결되어 있습니까? 누군가가 도울 수 있다면 – rayman

+0

? 나는 진짜로 여기에서 찔 렸어 ... 내가 어떻게 계속해야하는지 알아 내지 못한다 .. – rayman