【发布时间】:2016-09-24 15:57:24
【问题描述】:
好吧,我实现了一个 HashMap,其中键是字符串,值是整数,我想知道如何获取单击的单选按钮的值,然后获取值,然后如果我可以对它们进行一些操作,例如:
Cb1 2 已检查
Cb2 9 已检查
Cb3 19 未选中
输出应该是 11 (2+9)
所以我想对选中的值求和并使用该值更新 TextView。
从现在开始我有这个:
这是哈希映射
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,当我按下“接受”时,我可以获得所有@的总和ListView的987654327@
编辑
好吧,我最终做了这样的事情:
我创建了一个名为Sessio 的类,其中包含一个int(sessio 的值)和一个boolean,以检查复选框是否被选中。好吧,我必须将检查保存在SharedPreferences 上,并且我一直在阅读这里,您会建议不要在SharedPreferences 上保存HashMap,因为它需要大量内存,嗯.. 所以想法是一样的,我必须保存所有的hashmap以及哪个被点击或没有被点击,我认为这些东西要算CheckBox ...
【问题讨论】:
标签: java android listview checkbox