复选框不正常使用的ListView [英] Checkbox not working properly with ListView
本文介绍了复选框不正常使用的ListView的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我实现与ListView控件的listview.The问题我得到的每一个ITEN的复选框,当我点击任何一个复选框,然后这是不是也点击了一些其他复选框得到随机点击
公开查看getView(INT位置,查看convertView,ViewGroup中父){
// TODO自动生成方法存根
查看VI = convertView;
最终诠释为=位置;
如果(convertView == NULL){//如果它不回收,初始化一些
//属性
LayoutInflater充气=(LayoutInflater)活动
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
VI = inflater.inflate(R.layout.grid_item,NULL);
持有人=新ViewHolder();
holder.textheader =(TextView中)vi.findViewById(R.id.item1);
holder.textcpu =(TextView中)vi.findViewById(R.id.item2);
holder.text_modified_date =(TextView中)vi.findViewById(R.id.item4);
holder.text_cpu =(TextView中)vi.findViewById(R.id.item3);
holder.text_checkbox =(复选框)vi.findViewById(R.id.checkBox1);
vi.setTag(保持器);
holder.text_checkbox.setOnClickListener(新OnClickListener(){
@覆盖
公共无效的onClick(视图v){
如果(holder.text_checkbox.isClickable()){
itemChecked.set(如,真正的);
包=的;
}否则如果(!holder.text_checkbox.isClickable()){
itemChecked.set(为假);
}
字符串packag = app_package.get(AS);
Log.d(包listttttttttt,packag);
}
});
} 其他 {
支架=(ViewHolder)vi.getTag();
}
解决方案
尝试下面code
公开查看getView(INT位置,查看convertView,ViewGroup中父){
// TODO自动生成方法存根
查看VI = convertView;
最终诠释为=位置;
如果(convertView == NULL){//如果它不回收,初始化一些
//属性
LayoutInflater充气=(LayoutInflater)活动
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
VI = inflater.inflate(R.layout.grid_item,NULL);
持有人=新ViewHolder();
holder.textheader =(TextView中)vi.findViewById(R.id.item1);
holder.textcpu =(TextView中)vi.findViewById(R.id.item2);
holder.text_modified_date =(TextView中)vi.findViewById(R.id.item4);
holder.text_cpu =(TextView中)vi.findViewById(R.id.item3);
holder.text_checkbox =(复选框)vi.findViewById(R.id.checkBox1);
vi.setTag(保持器);
} 其他 {
支架=(ViewHolder)vi.getTag();
}
holder.text_checkbox.setOnCheckedChangeListener(新OnCheckedChangeListener()
{
公共无效onCheckedChanged(CompoundButton buttonView,布尔器isChecked)
{
如果(器isChecked)
{
//做你的东西
itemChecked.set(如,真正的);
包=的;
}
其他
{
//做你的东西
itemChecked.set(为假);
}
}
});
如果(itemChecked.size()= 0&放大器;!&安培; itemChecked.get(位置))
holder.text_checkbox.setChecked(真正的);
其他
holder.text_checkbox.setChecked(假);
I am implementing the checkbox with listview for every Iten of listview.The Problem i am getting is when I am clicking on any single check box then some other checkboxes which are not clicked also getting clicked randomly.
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View vi = convertView;
final int as=position;
if (convertView == null) { // if it's not recycled, initialize some
// attributes
LayoutInflater inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
vi = inflater.inflate(R.layout.grid_item, null);
holder = new ViewHolder();
holder.textheader = (TextView) vi.findViewById(R.id.item1);
holder.textcpu = (TextView) vi.findViewById(R.id.item2);
holder.text_modified_date = (TextView) vi.findViewById(R.id.item4);
holder.text_cpu = (TextView) vi.findViewById(R.id.item3);
holder.text_checkbox=(CheckBox)vi.findViewById(R.id.checkBox1);
vi.setTag(holder);
holder.text_checkbox.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (holder.text_checkbox.isClickable()) {
itemChecked.set(as, true);
packages=as;
} else if (!holder.text_checkbox.isClickable()) {
itemChecked.set(as, false);
}
String packag=app_package.get(as);
Log.d("package listttttttttt", packag);
}
});
} else {
holder = (ViewHolder) vi.getTag();
}
解决方案
Try below code
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View vi = convertView;
final int as=position;
if (convertView == null) { // if it's not recycled, initialize some
// attributes
LayoutInflater inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
vi = inflater.inflate(R.layout.grid_item, null);
holder = new ViewHolder();
holder.textheader = (TextView) vi.findViewById(R.id.item1);
holder.textcpu = (TextView) vi.findViewById(R.id.item2);
holder.text_modified_date = (TextView) vi.findViewById(R.id.item4);
holder.text_cpu = (TextView) vi.findViewById(R.id.item3);
holder.text_checkbox=(CheckBox)vi.findViewById(R.id.checkBox1);
vi.setTag(holder);
} else {
holder = (ViewHolder) vi.getTag();
}
holder.text_checkbox.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
if(isChecked)
{
// do your stuff
itemChecked.set(as, true);
packages=as;
}
else
{
// do your stuff
itemChecked.set(as, false);
}
}
});
if(itemChecked.size() != 0 && itemChecked.get(position))
holder.text_checkbox.setChecked(true);
else
holder.text_checkbox.setChecked(false);
这篇关于复选框不正常使用的ListView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文