Android Java - 在ListView中使用自定义适配器选中一个复选框,另一个行项也被选中

时间:2016-11-12 22:57:27

标签: java android listview

我正在使用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);
    }
}

1 个答案:

答案 0 :(得分:0)

它不是一个问题,它的android模式。你正在告诉android适配器,如果你查看它不是null来膨胀一行。那么你在那个位置查看它不是null并且android重用你在第一个中创建的行。它的适配器列表如何在android中运行。