2016-11-30 11 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

さて、可能な解決策の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(); 
    } 
}); 

シモンズ:この例では、私はカスタムビューを使用し、それはあなたが唯一持っているものだならば、もちろんそれは、あなたのLinearLayoutすることができ、ただし優れたカプセル化のために、カスタムクラスを使用する方が適切です。

+0

ええ、難しい部分は、発信者から隠されているので、ここでMyCustomViewへのエントリをキャストできません。 –

+0

@GreenHoどのように隠されていますか?つまり、クラスはこの時点からアクセスできないのですか?いくつかのサードパーティライブラリの動作を変更しようとしていますか? –

+0

右に隠れていると、リストビューはカプセル化のためにカスタムビューについて知らない/気にしません。カスタムビューは別のパッケージに存在します。 –

関連する問題