2013-08-20 148 views
0

我有一個由3個連續的ListView組成的佈局。選擇最左側列表中的項目將啓動第二個列表,依此類推。我試圖從選中最左邊列表中的第一項開始片段,並且因爲需要很多邏輯,所以我嘗試在點擊時觸發而不是重做所有邏輯。我正在使用這個:單擊第一個項目啓動ListView

mListView.performItemClick(mListView, 0, mListView.getItemIdAtPosition(0)); 

是我想要的嗎?如果是的話,我在哪裏稱此?

答:

如此看來,這不是爲我工作的原因是因爲我是手動突出行視圖中的視圖,它尚未被實例化(或類似的東西)。

我用這個代碼來調用它ListView控件被解僱後指出:

mListView.post(new Runnable() { 
     @Override 
     public void run() { 
      mListView.performItemClick(mListView, 0, mListView.getItemIdAtPosition(0)); 
     } 
    }); 

編輯:

我有4所列出依賴於被實例化之前,從以前的發送數據,並出於某種奇怪的原因,這種可運行的方法僅適用於第一個列表。對於其他人,我用這個答案:https://stackoverflow.com/a/15399035/1549672。另外,奇怪的是,這不適用於第一個列表。所有列表幾乎完全相同。

+0

我不明白當前代碼的好處,就是將相同的'OnItemClickListener'附加到每個'ListView's,除非我沒有正確理解某些東西。就個人而言,爲了便於閱讀,我會考慮爲這3個列表分配不同的聽衆。基本流程不應該需要大量的邏輯。 –

+0

每個列表都有自己的監聽器。我想要的是當第一次創建包含3個列表的片段時,我希望第一個列表中的第一個項目被點擊,這將打開其相應的第二個列表等。 – user1549672

+0

基本上,這些列表是爲了使每個列表都是依賴的在前一個,所以我不能只是打開它們 – user1549672

回答

0

按照先前的評論:

你可以嘗試包裹在Runnable選擇變化和張貼到ListView。這樣,選擇變更將不會發生,直到ListView(及其子)被測量和佈局等。確保在嘗試更改選擇之前設置適配器。

相關問題