gpt4 book ai didi

java - 从自定义 ListView 中的 CheckBox 获取值

转载 作者:太空狗 更新时间:2023-10-29 14:48:27 24 4
gpt4 key购买 nike

好吧,我实现了一个 HashMap,其中键是一个字符串,值是一个整数,我想知道如何获得单击的单选按钮的值,以获取该值,然后如果我可以对它们进行一些操作,例如:

Cb1 2 选中

Cb2 9 选中

Cb3 19 未选中

The output should be 11 (2+9)

所以我想对选中的项求和并用该值更新 TextView。

从现在开始我有这个:

这是HashMap

HashMap<String, Integer> hmAs = new LinkedHashMap<String, Integer>();

这就是我创建对话框的方式

Dialog mDialog;
mDialog=new Dialog(this);
mDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
mDialog.setContentView(R.layout.custom_dialog_as);
ListView lv = (ListView) mDialog.findViewById(R.id.listView);
Button bt = (Button) mDialog.findViewById(R.id.btAcceptAs);
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mDialog.dismiss();
//Here I need the sum of all of the values
}
});
ArrayAdapter adapter = new HashMapArrayAdapter(this, android.R.layout.simple_list_item_single_choice, new ArrayList(hmAs.entrySet()));
lv.setAdapter(adapter);
mDialog.show();

这是适配器

class HashMapArrayAdapter extends ArrayAdapter {

Context mContext;

private static class ViewHolder {
TextView tV1;
CheckBox cb;
}

public HashMapArrayAdapter(Context context, int textViewResourceId, List<Map.Entry<String, Integer>> objects) {
super(context, textViewResourceId, objects);
this.mContext = context;
}

@Override
public View getView(final int position, View convertView, ViewGroup parent) {

ViewHolder viewHolder;

if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.custom_item_dialog, parent, false);
viewHolder = new ViewHolder();
viewHolder.tV1 = (TextView) convertView.findViewById(R.id.tvDataAs);
viewHolder.cb = (Checkbox) convertView.findViewById(R.id.checkbox);
convertView.setTag(viewHolder);
} else
viewHolder = (ViewHolder) convertView.getTag();

Map.Entry<String, Integer> entry = (Map.Entry<String, Integer>) this.getItem(position);

viewHolder.tV1.setText(entry.getKey());
viewHolder.rb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Toast.makeText(mContext, String.valueOf(entry.getValue()), Toast.LENGTH_SHORT).show();
}
});

return convertView;
}
}

有了这个Toast我得到了 map 的确切值但问题是如何从对话框中得到 Button当我按下“接受”时,我可以获得所有 CheckBox 的总和的 ListView

编辑

好吧,我最终做了这样的事情:

我创建了一个名为 Sessio 的类其中包含 int ( session 的值)和 boolean检查复选框是否被选中。好吧,我必须在 SharedPreferences 上保存支票我一直在这里阅读 SO,你会建议不要保存 HashMapSharedPreferences因为它需要大量内存,所以..所以想法是一样的,我必须保存所有的 HashMap 以及是否单击了哪个 HashMap ,我认为这些东西要计算 CheckBox ...

最佳答案

Press "Accept" I can get the sum of all of the CheckBox of the ListView

HashMapArrayAdapter 中创建一个方法它返回选中的条目值并在 Accept 上调用它按钮点击:

1. 声明一个 HashMap 以 position 为键和 entry.getValue()作为存储选中的 CheckBox 值的键:

Map<Integer, String> checkedCheckBoxValues = new HashMap<Integer, String>();

2. 现在创建一个返回 HashMap<Integer, String> 的方法在 HashMapArrayAdapter类:

public HashMap<Integer, String> getCheckedCheckBoxs(){
return checkedCheckBoxValues;
}

3.onCheckedChanged中添加key和value至 checkedCheckBoxValues :

checkedCheckBoxValues.put(position,String.valueOf(entry.getValue()));

4.调用getCheckedCheckBoxs Accept 上的方法使用 adapter 单击按钮:

  @Override
public void onClick(View v) {
mDialog.dismiss();
HashMap<Integer, String> checkedValues=adapter.getCheckedCheckBoxs();
}

关于java - 从自定义 ListView 中的 CheckBox 获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37464360/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com