2012-10-13 30 views
0

我有一個ListView,它具有使用陣列適配器的自動完成功能,該功能完美無瑕。我的問題是,當我在ListView過濾後單擊列表項時,我得到了第一項的位置索引0,第二項的位置索引等等,以便篩選列表中的項目(在onlistitemclick listener中獲取的位置) 。在列表視圖上執行自動完成後獲取所選項目

如何在過濾之前獲取所選項目相對於列表的位置索引?

回答

0

當您爲視圖充氣時,爲視圖設置標記,並在篩選之前將項目位於列表中的位置。

view.setTag(originalPosition);  
view.setTag(resource_id, originalPosition); 

當通過相對位置訪問視圖,檢索使用view.getTag()的絕對位置

+0

你能否詳細說明你的答案?我應該添加標籤到哪個視圖?列表視圖中有超過100個項目 –

+0

請看這個方法[1]。它是填充視圖的適配器的一部分。假設您在每個列表項中都有一個TextView。你可以使用item位置標記TextView,同時在getView()中返回膨脹的行視圖() [1] - public View getView(int position,View convertView,ViewGroup parent) –

2

如果張貼代碼(至少摘錄這將是更好在其中設置適配器)。我假設你已經使用了類似下面的內容。

String[] items={"Item 1", "Item 2", "Item 3"}; 
public void onCreate(Bundle savedInstanceState) 
{ 
super.onCreate(savedInstanceState) 

setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,items)); 
} 

如果是這種情況,設置標籤和標識位置可能是不可能的。如果您可以直接進行字符串驗證,而不是找到合適的位置。但你說你有超過100件物品。

所以,最好創建一個擴展ArrayAdapter或其他的自定義適配器。在這種CustomAdapter,在getView(INT位置,查看convertView,一個ViewGroup父)方法您可以通過textView.setText(String[position]);設置每個項目一個TextView和textView.setTag(position);

每個視圖(TextView的)這一套標記後最後你設置的在您的活動課程中使用listView.setAdapter(customAdapter);自定義適配器,以便您可以讓getTag()找到即使在過濾項目後也不會改變的位置。讓我們看看在你發佈代碼之後是否可以編輯我的答案,以防你不想用我目前的建議去做。

相關問題