2014-04-04 52 views
0

我想創建ListView的複選框,將List傳遞給它,當對象被添加到列表中時ListView將自動更新。 我定義ListViewAndroid中CheckBox的ListView通過字符串而不是複選框可視化

<ListView 
     android:id="@+id/productList" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" >  
    </ListView> 

我添加複選框收集到listView

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.fragment_product_list, 
      container, false); 

    ListView listView = (ListView) rootView.findViewById(R.id.productList); 
    ArrayList<CheckBox> list = new ArrayList<CheckBox>(); 
    CheckBox el = new CheckBox(rootView.getContext()); 
    el.setText("STH"); 
    list.add(el); 
    ArrayAdapter<CheckBox> adapter = new ArrayAdapter<CheckBox>(rootView.getContext(),android.R.layout.simple_list_item_1, list); 
    listView.setAdapter(adapter);  
    return rootView; 
} 

,結果是可怕的:

enter image description here

我可能會得到Checkbox.toString()內那ListView而不是複選框列表。

如何獲取我可以點擊和選擇並將在一個容器中的複選框列表。

+1

如果你downvote說爲什麼。我會更新這個問題。 – Yoda

+0

您將您的checkBox添加到一個列表,然後生成您的適配器,在默認的'ArrayAdapter' toString()方法調用,你看到的文字,最好的辦法做到這一點,我認爲是編寫自己的適配器填充'複選框' –

回答

0

主要問題來自您正在使用適配器的'android.R.layout.simple_list_item_1'。這是一個內置的佈局,只包含一個文本視圖。

最好的方法是創建您自己的複選框和textview組成的視圖。

然後創建自己的適配器膨脹的查看和設置內容

public class CheckBoxListAdapter extends BaseAdapter{ 

CheckBox[] boxes; 

public CheckBoxListAdapter(CheckBox[] boxes){ 
    this.boxes = boxes; 
} 
@Override 
public View getView(int position, View convertView, ViewGroup parent{ 
    View v = inflate.inflate(R.layout.single_list_item, parent, false); 

    CheckBox cb = (CheckBox)v.findViewById(R.id.single_item_cb); 
    cb.setChecked(boxes[position].getChecked()); 

    TextView cb = (TextView)v.findViewById(R.id.single_item_tv); 
    cb.setText(boxes[position].getText()); 

    // Here you can attach listeners and customise components 
    return v; 
} 
} 

對於你只需要與一個TextView和匹配的ID的

然後,只需使用一個複選框視圖XML視圖作爲你的改編。

用這種方法

而且,你有一個添加按鈕,您可以編寫一個函數添加到適配器則可以處理你的數據,並顯示給你:)

希望這有助於

編輯:發現這一點,可能是有用的,他解釋得很好http://www.vogella.com/tutorials/AndroidListView/article.html

+0

你需要在'baseAdapter'中覆蓋更多方法,如getCount()和getItem() –

相關問題