繁体   English   中英

Android中CheckBox的ListView通过字符串而不是Checkbox可视化

[英]ListView of CheckBox in Android is visualized by strings instead of Checkboxes

我想创建复选框的ListView ,将List传递给它,并且在将对象添加到列表时, ListView会自动更新。 我定义了ListView

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

我将Checkboxes的集合添加到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;
}

结果是可怕的:

在此处输入图片说明

我可能会在该ListView获得Checkbox.toString()而不是复选框列表。

如何获取复选框的列表,我可以点击并选择它们,并将它们放在一个容器中。

主要问题来自您为适配器使用“ android.R.layout.simple_list_item_1”的事实。 这是一个内置布局,仅包含一个textview。

最好的方法是创建自己的包含复选框和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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM