Java 带有复选框滚动问题的ListView
我有android程序,但我的列表视图不能正常工作。 如果列表视图有更多滚动项,当我要单击最后一个滚动复选框时,请选中另一项。请找到我的代码示例。请帮助我解决此问题 这是我的getView for adapter类代码Java 带有复选框滚动问题的ListView,java,android,Java,Android,我有android程序,但我的列表视图不能正常工作。 如果列表视图有更多滚动项,当我要单击最后一个滚动复选框时,请选中另一项。请找到我的代码示例。请帮助我解决此问题 这是我的getView for adapter类代码 @SuppressLint("InflateParams") public View getView(int position, View convertView, ViewGroup parent) { View vi = convertVie
@SuppressLint("InflateParams")
public View getView(int position, View convertView, ViewGroup parent) {
View vi = convertView;
if(convertView==null){
vi = inflater.inflate(R.layout.unsettled_invoice_layout, null);
holder = new ViewHolder();
holder.desc = (TextView) vi.findViewById(R.id.usinvoicedesc);
holder.chkbox = (CheckBox) vi.findViewById(R.id.selected);
holder.chkbox.setOnClickListener(new OnItemClickListener(position));
vi.setTag(holder);
vi.setTag(R.id.selected, holder.chkbox);
} else
holder=(ViewHolder)vi.getTag();
if(data.size()<=0){
holder.desc.setText("No Data");
}else{
tempValues=null;
tempValues = (Invoice)data.get(position);
if(mode == 1){
int myColor = Color.rgb(0, 128, 0);
if(tempValues.getStatus() == 2){
myColor = Color.rgb(0, 128, 0); // Green
holder.chkbox.setChecked(false);
}else if(tempValues.getStatus() == 3){
myColor = Color.rgb(128, 0, 0); // Red
holder.chkbox.setChecked(true);
}
holder.desc.setBackgroundColor(myColor);
}
holder.desc.setText(tempValues.toString());
vi.setOnClickListener(new OnItemClickListener( position));
}
return vi;
}
@suppressint(“充气参数”)
公共视图getView(int位置、视图转换视图、视图组父视图){
视图vi=转换视图;
if(convertView==null){
vi=充气机。充气(R.布局。未结算发票布局,空);
holder=新的ViewHolder();
holder.desc=(TextView)vi.findViewById(R.id.usinvoicedesc);
holder.chkbox=(复选框)vi.findviewbyd(R.id.selected);
holder.chkbox.setOnClickListener(新的OnItemClickListener(位置));
vi.setTag(支架);
vi.setTag(R.id.selected,holder.chkbox);
}否则
holder=(ViewHolder)vi.getTag();
if(data.size()为此,您需要维护一个hashmap。当您单击复选框put position in hashmap和getview before set复选框时,请选中hashmap中的位置。如果存在,请选中复选框。为此,您需要维护一个hashmap。当您单击复选框put position in hashmap和getview before set复选框时,请选中复选框phashmap中的位置。如果存在,则选中复选框。请选中以下链接:
这是针对您在滚动上选中的另一项复选框的问题的特定解决方案:
在上面的链接示例中,在listview适配器类getView()方法中添加以下代码:
viewHolder.checkbox.setTag(position); // This line is important.
viewHolder.checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
int getPosition = (Integer) buttonView.getTag(); // Here we get the position that we have set for the checkbox using setTag.
list.get(getPosition).setSelected(buttonView.isChecked()); // Set the value of checkbox to maintain its state.
}
});
对于复选框,请单击添加以下代码:
viewHolder.checkbox.setTag(position); // This line is important.
viewHolder.checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
int getPosition = (Integer) buttonView.getTag(); // Here we get the position that we have set for the checkbox using setTag.
list.get(getPosition).setSelected(buttonView.isChecked()); // Set the value of checkbox to maintain its state.
}
});
请查看以下链接:
这是针对您在滚动上选中的另一项复选框的问题的特定解决方案:
在上面的链接示例中,在listview适配器类getView()方法中添加以下代码:
viewHolder.checkbox.setTag(position); // This line is important.
viewHolder.checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
int getPosition = (Integer) buttonView.getTag(); // Here we get the position that we have set for the checkbox using setTag.
list.get(getPosition).setSelected(buttonView.isChecked()); // Set the value of checkbox to maintain its state.
}
});
对于复选框,请单击添加以下代码:
viewHolder.checkbox.setTag(position); // This line is important.
viewHolder.checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
int getPosition = (Integer) buttonView.getTag(); // Here we get the position that we have set for the checkbox using setTag.
list.get(getPosition).setSelected(buttonView.isChecked()); // Set the value of checkbox to maintain its state.
}
});
我认为你的问题有很多问题和解决方法。试试搜索我认为你的问题有很多问题和解决方法。试试搜索