2016-11-30 94 views
0

我在列表視圖中具有線性佈局,並且需要在選擇線性佈局時更改線性佈局內的某些項目的可見性。由於設計,Listview不知道線性佈局是什麼,因此不能明確引用此佈局中的任何項目。在這種情況下,觸發線性佈局中可見性變化的最佳解決方案是什麼?如何在列表視圖中更改線性佈局的項目可見性

listView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(
        final AdapterView<?> adapterView, 
        final View view, 
        final int position, 
        final long id) { 
         //the View is a linearlayout 
         //will need to trigger its items visibility 
        } 
       } 

謝謝!

回答

1

那麼,一個可能的解決方案是調用所選擇的視圖的方法,這將做你想做的。考慮到您使用的是自定義視圖,它看起來就像這樣:

list.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     MyCustomView entry = (MyCustomView) parent.getAdapter().getItem(position); 

     // Now you call some method that changes the visibility of whatever you want 
     entry.doSomeStuff(); 
    } 
}); 

PS:在這個例子中,我使用了自定義視圖,但當然也可以是你的LinearLayout,如果這就是你只有,雖然使用自定義類更適合更好的封裝。

+0

是的,棘手的部分是我不能在這裏輸入MyCustomView的條目,因爲它對調用者是隱藏的。 –

+0

@GreenHo隱藏如何?你的意思是,從這一點來看,這個班級是不可訪問的?你想改變一些第三方庫的行爲嗎? –

+0

對,隱藏我的意思是,由於封裝,listview不知道/關心自定義視圖。自定義視圖存在於另一個包中。 –

相關問題