2015-07-19 22 views
0
final String[] genre = {"a", "b", "c", "d", "e","f","g","h","i","j" }; 
final String[] genre1 = {"...","0","1","2"}; 
final String[] genre2 = {"...","3","4","5"}; 
static int listint = 0; 

... 

@Override 
public Object instantiateItem(ViewGroup container, int position) {   

    if(position==0) {     
    View view = getActivity().getLayoutInflater().inflate 
    (R.layout.pager_item_test, container, false); 
    container.addView(view); 
    ListView ListViewOnScreen = (ListView)container.findViewById(R.id.ListViewOnScreen);   

     if (listint == 0) {    
     ArrayAdapter arrayadaptermain = new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, genre); 
     ListViewOnScreen.setAdapter(arrayadaptermain); 
     ListViewOnScreen.setOnItemClickListener(onitemclicklistenermain); 

     } else if (listint == 1) { 
     ArrayAdapter arrayadapter1 = new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, genre1); 
     ListViewOnScreen.setAdapter(arrayadapter1); 
     ListViewOnScreen.setOnItemClickListener(onitemclicklistener1);} 


     return view; 
} 

... 

} 


public AdapterView.OnItemClickListener onitemclicklistenermain = new AdapterView.OnItemClickListener(){ 

    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long l_position) { 
    String tv = (String)parent.getAdapter().getItem(position); 
    Toast.makeText(getActivity(), tv + " printed from main, listint = " + listint, Toast.LENGTH_SHORT).show(); 


    switch(position){ 
     case 0: listint = 1; break;    
}}}; 


public AdapterView.OnItemClickListener onitemclicklistener1 = new AdapterView.OnItemClickListener(){ 
    @Override   
    public void onItemClick(AdapterView<?> parent, View view, int position,         long l_position) { 
    String tv = (String)parent.getAdapter().getItem(position); 
    Toast.makeText(getActivity(), tv + " printed from 1, listint = " + listint, Toast.LENGTH_SHORT).show(); 

    switch(position){      
     case 0: listint = 0; break; 
}}};` 

這是SlidingTabsBasicFragment(來自SlidingTabsBasic)其頁面是listview的一部分。如何使Listview更改內容(數組)和onitemclick功能

我試圖使這個程序是這樣的:

- 首先,ListViewOnScreen顯示的String []流派。

- 當ListViewOnScreen是顯示字符串[]流派,點擊位置0( 「A」)時,會將ListViewOnScreen顯示字符串[] genre1代替。

- 當ListViewOnScreen顯示String [] genre1時,單擊位置0(這裏,它將是「...」)將使ListViewOnScreen再次顯示String []類型。

我認爲這個代碼會工作。但是ListViewOnScreen無論listint是什麼,都能一致地顯示流派(不是genre1)。

特異)點擊 '一個' 第一時間: 吐司:從主印刷,listint = 0 在陣列無變化,仍然顯示 「A」, 「B」,...

Clicking 'a' second time: 
Toast: a printed from main, listint = 1 
Still No change in array. 

我應該如何更改我的代碼才能正常工作?

+0

你嘗試過調用arrayadaptermin.notifyDataSetChanged();在對適配器進行更改以刷新listView之後 –

回答

0

我想發表評論,但我沒有必要的信貸發佈,所以我加入這個答案。從你在這裏發佈的代碼看起來好像你正在處理PageAdapter instantiateItem函數。那麼從輸出中可以看出,僅僅爲頁面創建了instantiateItem函數,該頁面設置了具有內容genre []的初始適配器並顯示它們。下一次按「a」時,頁面將被重用,而不是被重新創建,所以instantiateitem函數不會被再次調用。那麼,可能instantiateItem不是切換適配器的地方嗎?