2012-05-17 24 views
3

我是一名編程新手,在使用getCheckedItemPositions()作爲複選框並從自定義列表視圖中的編輯文本中獲取編輯值時遇到問題。任何人都可以幫助我創建具有上述功能的自定義列表視圖。謝謝。自定義列表使用編輯文本和複選框查看

*這是自定義列表視圖的XML代碼

<CheckBox android:id="@+id/checkBox" android:layout_height="wrap_content" 
android:layout_width="wrap_content" 
android:layout_alignParentRight="true" 
android:text="CheckBox" 
android:onClick="clickHandler" 
></CheckBox> 
<TextView android:layout_height="wrap_content" 
android:layout_width="fill_parent" android:text="TextView" 
android:id="@+id/textView1" 
android:layout_alignParentLeft="true" 
    android:layout_centerHorizontal="true" android:layout_marginBottom="14dp" 

機器人:layout_toLeftOf = 「@ + ID /複選框」>

*這是成立的ListView

LV1代碼=(ListView)dialog.findViewById(R.id.l1); 適配器2 =新SimpleCursorAdapter( 此, R.layout.custom, 光標2, 新的String [] { 「ITEMNAME」}, 新INT [] {R.id.textView1});

  lv1.setItemsCanFocus(false); 
     lv1.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 
     lv1.setAdapter(adapter2); 

*這是我的嘗試檢查

公共無效的onClick(視圖v)時做{

   int len = lv1.getCount(); 
       SparseBooleanArray checked = lv1.getCheckedItemPositions(); 
       for (int i = 0 ; i < len; i++) 
        if (checked.get(i)) { 
        String item = mArrayList.get(i); 

       mItems.add(mArrayList.get(i)); 

      System.out.println(item); 




        /* do whatever you want with the checked item */ 
        } 

但是,這是行不通的。而且我想用這種方式獲取值的編輯文本。當我檢查並單擊按鈕應用終止。 Logcat when Onclick() trigurred

+0

向我們展示您所嘗試過的內容,以便我們告訴您您錯在哪裏......我們不會爲您編碼。 – Barak

+0

@Barak我試過的代碼是以上..謝謝 –

+0

@AlexLockwood我試過的代碼是..以上感謝 –

回答

1

以下代碼將解決您的問題。

public class SimpleCursorAdapter extends ArrayAdapter { 
    private Context mcontext; 
    private View rowview; 
    LayoutInflater inflater; 
    public static ArrayList<Boolean > itemchecked=new ArrayList<Boolean>(); 
    public SimpleCursorAdapter(Context context,ArrayList<String> mylist) 
    { 
     super(context,your layout id); 
     mcontext=context; 

     //this is the important step  
     for (int i = 0; i < this.getCount(); i++) 
     { 
      itemchecked.add(i,false); // initializes all items value with false 
     } 
    } 

    public View getView(final int position, View convertView, ViewGroup parent) { 
     rowview=convertView; 
     if(convertView==null) 
     { 
      rowview = inflater.inflate(R.yourlayout, parent, false); 
     } 

     TextView textView_heading = (TextView) rowview.findViewById(R.id.textView1); 


     CheckBox checkbox_detail=(CheckBox) rowview.findViewById(R.id.checkBox1); 
     checkbox_detail.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       CheckBox cb = (CheckBox) v.findViewById(R.id.checkBox1); 

       if (cb.isChecked()) { 
        itemchecked.set(position, true); 
        // do some operations here 
       } else if (!cb.isChecked()) { 
        itemchecked.set(position, false); 
        // do some operations here 
       } 
      } 
     }); 
     checkbox_detail.setChecked(itemchecked.get(position)); 
     textView_heading.setText(userheading_list.get(position)); 

     return rowview; 
    } 
} 
//now the custom list part finish 

現在,爲了從列表中的所有信息,還看其複選框被選中:

for(int i=0;i<yourlistadapterobject.getCount();i++) 
{ 
    View content_view=msg_adapter.getView(i,null , user_detail_list); 
    System.out.println("the list count"+user_detail_list.getCount()); 
    if(MyContactAdapter.itemchecked.get(i)) 
    { 
     System.out.println("is checked true"); 
     TextView tv_heading= (TextView) content_view.findViewById(R.id.textView1); 

     String text=tv_heading.getText(); 
    } 
} 

通過這樣做,就可以得到該檢查對複選框的所有信息。

相關問題