2011-06-06 76 views
1

我列出了一些listadapter後點擊列表中的項目我想用新數據重新加載列表,更改適配器的比賽。如何更改部分中的列表視圖適配器setOnItemClickListener

我setOnItemClickListener用這個,但我得到的錯誤: 「類型構造ArrayAdapter(新AdapterView.OnItemClickListener(){},INT,ArrayList中)是未定義」

list.setAdapter(new ArrayAdapter<String>(this, R.layout.simple_list_item_1,Data.user.getChosen_rest())); 

我應該如何正確地做到這一點?

回答

1

Glendon的答案可能是正確的。不過,如果出於某種原因確實需要更改適配器,則需要將正確的Context實例傳遞給構造函數的第一個參數。

您可以擴展OnClickListener併爲其添加一個字段mContext,您將爲其分配當前的活動。然後,用它作爲:

list.setAdapter(new ArrayAdapter<String>(mContext, R.layout.simple_list_item_1,Data.user.getChosen_rest())); 

另外,如果聽者是一個內部類的活動,你可以使用:

list.setAdapter(new ArrayAdapter<String>(MyActivity.this, R.layout.simple_list_item_1,Data.user.getChosen_rest())); 
+0

感謝Aleadam你的答案適用於我:)另外一個問題點擊我的適配器後和列表上的東西都在改變,我想在按下後退按鈕後可以選擇回去,完成這個任務的最簡單方法是什麼? – Marcin 2011-06-06 23:47:00

+0

我不太確定你的意思,回頭看看。就像一個完全不同的問題,請考慮發佈一個更好的描述你需要的新的。 – Aleadam 2011-06-06 23:50:57

1

答案here應該讓你朝着正確的方向前進。如果您可以使用add(),remove(),insert()clear()轉換您的初始ArrayAdapter,則可以撥打notifyDataSetChanged()來重新加載它。

編輯

實際上,爲了更好地解決您的錯誤,請嘗試使用

list.setAdapter(new ArrayAdapter<String>(NameOfActivity.this, R.layout.simple_list_item_1,Data.user.getChosen_rest())); 

第一替換

list.setAdapter(new ArrayAdapter<String>(this, R.layout.simple_list_item_1,Data.user.getChosen_rest())); 

+0

是,不同的地方是聽衆。在看到您的編輯之前,我添加了相同的方法。 – Aleadam 2011-06-06 23:31:37

+0

當我清除我的適配器,並嘗試添加新的字符串或「重新創建ArrayAdapter與新的列表數據」我得到的錯誤在開始時提到類型構造函數ArrayAdapter(新的AdapterView.OnItemClickListener(){},int,ArrayList)未定義「' – Marcin 2011-06-06 23:34:57

+0

順便說一句,'NameOfJavaFile'可能是擴展OnClickListener的類的名稱,並不清楚你是否指的是活動 – Aleadam 2011-06-06 23:53:27