我正在使用arrayList,Custom Adapter和ListView(使用Text和Image来指示单击ListView项时选择的项目)。更改的图像与复选框具有相同的功能,因此单击时它会更改为刻度线,并在第二次单击时更改为十字形等...
所有内容都按预期工作,除非我单击该行以指示已选择的项目有效,但问题是还有几行的另一项似乎也被选中,这不是我的意图。我已经阅读了很多关于recylerViews和ViewHolder的帖子,但它们似乎不起作用。
以下是我的代码示例;
public void myList() {
Info.add(new Stored("Name", 2000, R.drawable.pic1, "My details", false));
}
private class MyListAdapter extends ArrayAdapter<Stored> {
public MyListAdapter() {
super(MainActivity.this, R.layout.myLayout, Info);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View itemView = convertView;
if (itemView == null) {
itemView = getLayoutInflater().inflate(R.layout.listlayout11, parent, false);
}
// Have defined items to be displayed here
}
private void myonClickItem() {
final ListView myList= (ListView) findViewById(R.id.listVierMain);
myList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View viewClicked, int position, long id) {
Stored clickedItem1 = Info.get(position);
String currentValItem = ((TextView) viewClicked.findViewById(R.id.item5)).getText().toString();
clickedItem1.SelectedSetter(currentValItem, viewClicked);
}
// Setter used to set data to arrayList
public void SelectedSetter(String wasItClicked, View viewClicked)
{
ImageView checkedImage = (ImageView) viewClicked.findViewById(R.id.checkBoxIMG); // Create new object and assign to control
if (wasItClicked.equals("false")) {
this.itemChecked = true;
checkedImage1.setImageResource(R.drawable.CheckedPic);
}
else{
this.itemChecked = false;
checkedImage1.setImageResource(R.drawable.unCheckedPic);
}
}
答案 0 :(得分:0)
它不是一个问题,它的android模式。你正在告诉android适配器,如果你查看它不是null来膨胀一行。那么你在那个位置查看它不是null并且android重用你在第一个中创建的行。它的适配器列表如何在android中运行。