2013-12-20 55 views
0

在我的android應用程序中,我定義了一個布爾Arraylist來保存哪些項目在我的ListView中被選中,所以我可以恢復ListView狀態。Android。 setOnItemSelectedListener.not working

public static ArrayList<Boolean> DataChecked = new ArrayList<Boolean>(); 

我試圖改變DataChecked裏面這個偵聽器,我在網上找到。這聽衆讓我檢查和取消選中項目,我添加了最後一行:

public void onItemSelected(AdapterView parentView, View v, int position, long id) { 
    CheckedTextView textView = (CheckedTextView)v; 
    textView.setChecked(!textView.isChecked()); 

    //changed 
    DataChecked.set(position,textView.isChecked()); 
} 

public void onNothingSelected(AdapterView parentView) { 
} 

檢查和取消選中的東西工作正常。但我添加的行什麼也不做,它不會更新我的DataChecked。 然後,我實現了這個監聽器,並且使用了:

public void onItemClick(AdapterView parentView, View v,int position, long id) { 

    CheckedTextView textView = (CheckedTextView)v; 
    DataChecked.set(position,textView.isChecked()); 
} 

現在我想(改變DataChecked數組列表)功能工作正常!但我不想要兩個聽衆,我想在第一個聽衆上實現這一行:

DataChecked.set(position,textView.isChecked()); 

那麼爲什麼會發生這種情況呢?有線索?

謝謝!

+0

onItemSelected從哪個接口來? –

+0

他被添加到我的ListView – user3121759

回答

1

確保您的列表視圖正在使用該偵聽器。

// Use "this" if your Activity is implementing OnItemClickListener 
myListView.setOnItemClickListener(this); 

myListView.setOnItemClickListener(myOnItemClickListener); 

lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> arg0, View v, int position, long arg3) { 
     CheckedTextView textView = (CheckedTextView)v; 
     textView.setChecked(!textView.isChecked()); 

     //changed 
     DataChecked.set(position,textView.isChecked()); 
    } 
}); 
+1

和另一altenative也將其創建爲一個匿名內部類, myListView.setOnItemClickListener(新OnItemClickListener { ...繼承的方法 }); – stevietheTV

+0

你好!我使用了代碼myListView.setOnItemClickListener(myOnItemClickListener);爲兩個聽衆。這些行:CheckedTextView textView =(CheckedTextView)v; textView.setChecked(!textView.isChecked());工作正常。 – user3121759