遇到这样的需求是:点击进入一个listview,每个item需要一个checkbox来进行勾选,当退出该activity之后,再次进入该activity之后,需要看到上次退出时候的checkbox的状态,得益于这位前辈的博文已经讲得很好了:listview checkbox 保留状态 可以参考一下,他是默认是不选中,而我的需求第一次进入是全部选中:
主要控制代码如下:SelectInstrumentActivity.java:
package client.verbank.mtp.allone.frame.systemsettings.nextpage;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import jedi.verbank.CSTS3.comm.struct.Instrument;import jedi.verbank.client.station.api.doc.APIDoc;import android.app.Activity;import android.content.SharedPreferences;import android.os.Bundle;import android.preference.PreferenceManager;import android.view.View;import android.view.View.OnClickListener;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.Button;import android.widget.ListView;import android.widget.TextView;import client.verbank.mtp.allone.R;import client.verbank.mtp.allone.frame.systemsettings.nextpage.SelectInstrumentActivityAdapter.ViewHolder;import client.verbank.mtp.allone.util.SharepreferencesUtilSystemSettings;public class SelectInstrumentActivity extends Activity {List
// 得到保存在这个activity中的数据public void getCheck() {SharedPreferences mPerferences = PreferenceManager.getDefaultSharedPreferences(this);// 获取默认的preference// 获取activity私有的preferenceSharedPreferences m_private = this.getPreferences(MODE_PRIVATE);String counter = mPerferences.getString(String.valueOf(id), defaul);// 如果没有获取到的话默认是0for (int i = 0; i < list.size(); i++) {if (counter.charAt(i) == '1') {SelectInstrumentActivityAdapter.getIsSelected().put(i, true);}}}// 保存需要保存的数据public void saveCheck(String ID, String data) {// 保存shujuSharedPreferences mPerferences = PreferenceManager.getDefaultSharedPreferences(this);SharedPreferences m_private = this.getPreferences(MODE_PRIVATE);SharedPreferences.Editor mEditor = mPerferences.edit();mEditor.putString(ID, data);mEditor.commit();}// 刷新listview和TextView的显示private void dataChanged() {// 通知listView刷新mAdapter.notifyDataSetChanged();// TextView显示最新的选中数目tv_show.setText("已选中" + checkNum + "项");};}
适配器类:SelectInstrumentActivityAdapter.java
package client.verbank.mtp.allone.frame.systemsettings.nextpage;import java.util.ArrayList;import java.util.HashMap;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.CheckBox;import android.widget.TextView;import client.verbank.mtp.allone.R;public class SelectInstrumentActivityAdapter extends BaseAdapter {// 填充数据的listprivate ArrayList list;// 用来控制CheckBox的选中状况private static HashMap isSelected;// 上下文private Context context;// 用来导入布局private LayoutInflater inflater = null;// 构造器public SelectInstrumentActivityAdapter(ArrayList list,Context context) {this.context = context;this.list = list;inflater = LayoutInflater.from(context);isSelected = new HashMap();// 初始化数据initDate();}// 初始化isSelected的数据private void initDate() {for (int i = 0; i < list.size(); i++) {getIsSelected().put(i, false);}}@Overridepublic int getCount() {return list.size();}@Overridepublic Object getItem(int position) {return list.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder holder = null;if (convertView == null) {// 获得ViewHolder对象holder = new ViewHolder();// 导入布局并赋值给convertviewconvertView = inflater.inflate(R.layout.activity_systeminstrument_item, null);holder.tv = (TextView) convertView.findViewById(R.id.item_tv);holder.cb = (CheckBox) convertView.findViewById(R.id.item_cb);// 为view设置标签convertView.setTag(holder);} else {// 取出holderholder = (ViewHolder) convertView.getTag();}// 设置list中TextView的显示holder.tv.setText(list.get(position));// 根据isSelected来设置checkbox的选中状况holder.cb.setChecked(getIsSelected().get(position));return convertView;}public static HashMap getIsSelected() {return isSelected;}public static void setIsSelected(HashMap isSelected) {SelectInstrumentActivityAdapter.isSelected = isSelected;}public static class ViewHolder {TextView tv;CheckBox cb;}}
主要要实现保存checkbox的状态的方式使用sharepreferences来保存状态,当选中的时候为1,不选中的时候为0,当再次进入该activity时,使用charat方式来取出每个listview item的状态是为1还是0,接着使用: SelectInstrumentActivityAdapter.getIsSelected().put(i, true);
来设置状态。
- [android]在上下文菜单的选中事件中获取列表选中的元素
- android解决坚屏拍照和保存图片旋转90度的问题,并兼容4.0
- Android,LIstView中的OnItemClick点击无效的解决办法
- android手机客户端上传文件,java servlet服务器端接收并保存到服
- Android(安卓)PureMVC
- android三级联动、四级联动(地区选择)
- Android(安卓)tabhost让选中项加上背景图
- android从服务器下载文件(php+apache+win7+MySql)
- activity状态的保存和保持(onRetainNonConfigurationInstance和g
随机推荐
-
android_lesson_2
-
[置顶] android Properties的使用
-
WebViewJavascriptBridge实现js与android
-
android自带Base64加密解密
-
Android再次按back键退出
-
45个android实例源码
-
使一个button无效时变灰
-
android获取手机通讯录联系人
-
android 可滑动的View
-
解决 ButterKnife8.2.1 与 Dagger2.5 冲