2014-07-11 22 views
0

enter image description hereenter image description here請參閱圖像以更好地理解問題。如何從片段中確定子視圖的狀態

我有一個帶有ExpandableListView和幾個按鈕的片段。

ExpandableListView - >將ListViews作爲每個子元素 - > ListView中的每一行都是ImageView,TextView和複選框的組合。 ExpandableListView由CustomAdapter(這是一個單獨的java文件從片段)填充

問題是 - 我如何找出從按鈕中選擇ExpandableListView的哪個孩子。

  • 我可以將信息存儲在SharedPreferences中,但我可能必須使用複雜的java Collections對象。我想避免這種情況。
  • 片段和適配器是兩個單獨的文件,據我所知沒有系統回調。
  • 什麼是標準方式 - 片段能夠訪問其每個子視圖的信息?

任何幫助或指針歡迎!提前致謝。

+0

如何創建和設置適配器的參考? –

回答

0

創建一個監聽回調接口,是這樣的:

public interface ListenerChildSelected 
{ 
    public void onChildSelected(int childNum); 
} 

然後,讓你的片段實現這個監聽器:

public class FragmentTest implements ListenerChildSelected 

然後,當你實例化自定義適配器,通過在聽者:

//kv 3rd parameter would be listener 
CustomBaseAdapter customBaseAdapter = new CustomBaseAdapter(this, items, this); 

然後,在您的CustomBaseAdapter的構造函數中,設置一個成員現場的聽衆:

public CustomBaseAdapter(Context context, ArrayList<Item> items, ListenerChildSelected listenerChildSelected) 
{ 
    mListenerChildSelected = listenerChildSelected; 
    ... 
} 

然後,每一個項目被選中時,請撥打:

mListenerChildSelected.onChildSelected(rowNum); 
+0

謝謝@Karim!你的解決方案實際上意味着,每當我們在Adapter中進行一些操作時調用Fragment(在這種情況下通過接口調用實現)。這是正確的嗎 ? – Deep

+0

是的深,每次你的Checkbox的onCheckedChange()被調用時,你都會調用你的ListenerChildSelected。 –

0
  1. 獲取onCreateView()ExpandableListView和參考保存它。

  2. 在您的按鈕的匿名onClick()處理器,調用getSelectedPosition()存儲在步驟1中

+0

謝謝大家! – Deep

相關問題