2010-05-19 80 views
1

我正在使用ListView和ArrayAdapter來存放對象。當我選擇一個項目時,我正在捕獲所選項目的位置和索引。如果在選擇之前向下滾動,則位置和索引代表項目在列表中的位置。選擇這些項目將我帶到另一個活動。當我使用後退按鈕返回列表時,似乎ListView爲可見項目獲取了一個新的位置和索引。ListView - 重新啓動時的索引和位置行爲()

因此,我無法弄清楚如何在ListView活動的重新啓動()期間引用所選項目。我試圖捕捉位置和索引,但正如我所說的,它們在返回到活動時發生變化。

我對ListView的「重繪」理解是否正確?它是否根據可見物品重新編號? - 當生命週期中getView()被調用?有沒有辦法強制ListView的更新,以便我捕獲的索引仍然指向同一個對象?

感謝, 傑森

回答

0

如果你在你的ListView相同的元素,你將擁有相同的位置的時候,當你點擊一個項目...

@Override 
    protected void onListItemClick(ListView l, View v, final int position, long id) { 
     super.onListItemClick(l, v, position, id); 
Toast.makeText(this, "This is the Item " + position + " of my listView", 
       Toast.LENGTH_LONG).show(); 
     }); 

在你同getView()函數...

public View getView(int position, View convertView, ViewGroup parent) { 
    Toast.makeText(this, "This is the Item " + position + " of my listView", 
         Toast.LENGTH_LONG).show();   
+0

當我單擊項目,我去另一個活動。當我點擊後退按鈕時,「可見」列表將重新編號,從零開始的頂部項目。新的立場是不一樣的。這看起來像是一種優化行爲。當這種情況發生時,我會失去對先前選定項目的引用。 我在返回時正在更改ListView中的圖像。如果我稍微向下滾動並選擇,讓我們說項目5.當我返回時,可見列表頂部的第5個項目中的圖標會發生變化。這可能是之前的第七次。 – tunneling 2010-05-19 11:17:09

+0

當您在ListView中第一次單擊該項目時,項目位置必須是從零開始的位置!發佈您的實施代碼 – Jorgesys 2010-05-19 15:07:27

+0

活動A是一個ListView。活動B是從活動A中選擇的項目的控制器。當從活動B返回到活動A時,「舊」位置不等於所選項目的「新」位置。我注意到,項目的「新」位置是根據正在顯示的頂部的位置分配的。當我有權訪問它時,我會發布代碼。謝謝。 – tunneling 2010-05-19 16:32:01

相關問題