CheckBox滑动后乱序

来源:互联网 发布:建筑工程优化设计方案 编辑:程序博客网 时间:2024/05/21 17:48
package com.example.checkdemo;


import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.view.Menu;
import android.widget.ListView;


public class MainActivity extends Activity {
private ListView listview;
List<Map<String, Object>> result=new ArrayList<Map<String,Object>>();
CheckAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}


private void initView() {
listview=(ListView) findViewById(R.id.test_listview);
getData();
adapter=new CheckAdapter(MainActivity.this, result);
listview.setAdapter(adapter);
}
private void getData(){
for (int i = 0; i <20; i++) {
Map<String, Object> map=new HashMap<String, Object>();
map.put("count", i);
result.add(map);
}
}
 


}






package com.example.checkdemo;


import java.util.ArrayList;
import java.util.List;
import java.util.Map;


import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;


public class CheckAdapter extends BaseAdapter {
private Activity mContext;
private List<Map<String, Object>> result=new ArrayList<Map<String,Object>>();
private List<Boolean> isSelectList=new ArrayList<Boolean>();//记录所有列表是否选中的集合
private boolean isCheck=false;
/**
* 改变某一条列表的选中状态
* @param location 列表位置
* @param isSelect 设置true(选中) or false 
*/
 public void setSelect(int location,boolean isSelect){
 isSelectList.set(location, isSelect);
 }
/**
*  清除所有列表的值
*/
public void clearAllSelectList(){
isSelectList.clear();
}
/** 根据传入的某一个位置获取列表的信息,是否是选中状态
* @param location 传入某一条位置 
* @return 
* @return
*/
public boolean getSelect(int location){
if (location<isSelectList.size()) {
return isSelectList.get(location);
}
return  false;
}
/**
* 初始化所有列表为未选中状态, 既是设置它的位置为false
* @param helps
*/
public boolean setCheckForHelpList(List<Map<String, Object>> result){
if (result!=null&&result.size()>0) {
for (int i = 0; i <result.size(); i++) {
isSelectList.add(false);
}
}
return false;

}
/**
* 是否显示选中框 true 为显示,否则反
* @param isCheck
*/
public void setCheck(boolean isCheck) {
this.isCheck = isCheck;
}


public CheckAdapter(Activity mContext, List<Map<String, Object>> result) {
super();
this.mContext = mContext;
setCheckForHelpList(result);
this.result = result;
}


@Override
public int getCount() {
// TODO Auto-generated method stub
return result.size();
}


@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return result.get(position);
}


@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}


@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView==null) {
holder=new ViewHolder();
convertView=LayoutInflater.from(mContext).inflate(R.layout.test_item, null);
holder.help_item_name=(TextView) convertView.findViewById(R.id.help_item_name);
holder.my_help_circle=(ImageView) convertView.findViewById(R.id.my_help_circle);
convertView.setTag(holder);
}else{
holder=(ViewHolder) convertView.getTag();
}
@SuppressWarnings("unchecked")
Map<String, Object> map=(Map<String, Object>) getItem(position);
holder.help_item_name.setText(map.get("count").toString());
if (getSelect(position)) {//当选中时,就显示选中的图标
holder.my_help_circle.setImageResource(R.drawable.my_help_share_true);
}else{//否则,显示未选中的图标
holder.my_help_circle.setImageResource(R.drawable.my_help_share_false);
}
holder.my_help_circle.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
if (getSelect(position)) { //如果是选中状态就把它设为未选中
setSelect(position, false);
}else{//如果是未选中,则设置为选中
setSelect(position, true);
}
//刷新列表
notifyDataSetChanged();

}
});

return convertView;

class ViewHolder{
TextView help_item_name;
ImageView my_help_circle;
}

}





















































0 0
原创粉丝点击