繁体   English   中英

用于ListView的CustomAdapter中的复选框

[英]CheckBox in CustomAdapter for ListView

我有一个带有自定义适配器的ListView 现在我向每个元素添加一个CheckBox以获得“多重检查listview”,但是具有以下代码:

import java.util.ArrayList;

class CustomListAdapter extends ArrayAdapter<String> {
    String doubleTab = "\t\t";
    CheckBox elementChecker;
    ArrayList<Boolean> isChecked;

    ArrayList<Integer> checkedPositions = new ArrayList<Integer>();

public CustomListAdapter(Context context, String[] dataListFinal) {
        super(context, R.layout.list_item_datalist ,dataListFinal);
    }
    public String allElementsAdapter = "";

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        LayoutInflater iteminflater = LayoutInflater.from(getContext());
        View customView = iteminflater.inflate(R.layout.list_item_datalist, parent, false);

        ImageView image = (ImageView) customView.findViewById(R.id.list_icon_product);
        TextView textViewlabel = (TextView) customView.findViewById(R.id.list_item_datalist_label_textview);
        TextView textViewdetails1 = (TextView) customView.findViewById(R.id.list_item_datalist_textview_details_1);
        elementChecker = (CheckBox) customView.findViewById(R.id.checkBox_Item);

        String singleListItem = getItem(position);
        String[] singleListItemArray = singleListItem.split("\t");
        String id = singleListItemArray[0];
        String product = singleListItemArray[1];
        String label = singleListItemArray[2];



        allElementsAdapter = product + label + serial + mac + daaid + bill;

        switch (product) {
            case "Pc":
                image.setImageResource(R.drawable.icon_pc_circle);
                break;
            case "Laptop":
                image.setImageResource(R.drawable.icon_laptop_circle);
                break;

        }

        String details1 = product;

        textViewlabel.setText(label);
        textViewdetails1.setText(details1);

        elementChecker.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (elementChecker.isChecked()){
                    Log.d("SELECTED", "yes");
                }else {
                    Log.d("SELECTED", "no");
                }
            }
        });

        return customView;
    }

    public String getAllElements(){
        return allElementsAdapter;
    }

}

OnClickListenerOnClickListener最后一个条目。 有人可以帮我解释一下我必须做什么吗?

您必须声明CheckBox elementChecker; 里面的getView

您总是会覆盖elementChecker

    Checkbox elementChecker = (CheckBox) customView.findViewById(R.id.checkBox_Item);

将是一个解决方案。 但是您必须将复选框的状态保存在某处...

暂无
暂无

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

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