我想创建ListView
个复选框,将List
传递给它,当对象添加到列表ListView
时,它将自行更新。
我定义了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;
}
结果太可怕了:
我可能会在Checkbox.toString()
内找到ListView
而不是复选框列表。
如何获取我可以点击并选择并将在一个容器中的复选框列表。
答案 0 :(得分: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;
}
}
对于XML视图,您只需要一个带有textview的视图和一个与这些id
匹配的复选框然后只需使用它作为改编版。
使用此方法,由于您有一个添加按钮,您可以向适配器编写添加功能,然后它可以处理您的数据并显示给您:)
希望这有帮助
编辑:发现这个,可能很有用,他解释得很好http://www.vogella.com/tutorials/AndroidListView/article.html