2016-11-12 35 views
0

我使用的是ArrayList中,自定義適配器和ListView(使用文本和圖像的顯示項目被點擊一個ListView項目時選擇)也選擇。改變具有相同的功能複選框,這樣點擊時點擊一次等等的Android的Java - 使用自定義適配器的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

我想你最好也相對於'onItemClick()'方法的代碼上傳。問題可能在那裏! – Robb1

回答

0

它不是一個問題,其Android模式。 ü告訴android適配器,如果你認爲它不爲null來擴充一行。那麼我們在這個位置查看它不是null,android會重用你在第一行創建的行。它的適配器列表如何在android中工作。

+0

通過消除零檢查的ImageView似乎確實改變點擊。從我可以看到你是正確的這是佈局被重用的方式。我只是刪除了if(itemView == null){}檢查,所以只顯示下面的內容; itemView = getLayoutInflater()。inflate(R.layout.listlayout11,parent,false); – user3175140

相關問題