2012-04-12 29 views
1

編輯:我想通了,感謝FragmentPagerAdapter與ArrayListFragment

我一直在試圖永遠現在實現我的每一個ViewPager的頁面單獨列表視圖。我非常瞭解this tutorial,但它只創建一個用於每個頁面的ListView。

我希望能夠在每個頁面中有多個ListView,從中我可以控制每個頁面的ListView會發生什麼onClick。我有我的應用程序與一個ListView一起工作(如在教程中),但我一直在努力掙扎與多個。

我的代碼發佈在下面,我嘗試了很多不同的東西,我只需要在我的開發中繼續前進。感謝您的幫助

private static class MyAdapter extends FragmentPagerAdapter implements 
     TitleProvider { 

    public MyAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return ArrayListFragment.newInstance(position); 
    } 

    @Override 
    public int getCount() { 
     return Arrays.TITLES.length; 
    } 

    public String getTitle(int position) { 
     return Arrays.TITLES[position]; 
    } 

} 

public static class ArrayListFragment extends ListFragment { 
    int mNum; 

    /** 
    * Create a new instance of CountingFragment, providing "num" as an 
    * argument. 
    */ 
    static ArrayListFragment newInstance(int num) { 
     ArrayListFragment f = new ArrayListFragment(); 

     // Supply num input as an argument. 
     Bundle args = new Bundle(); 
     args.putInt("num", num); 
     f.setArguments(args); 

     return f; 
    } 

    /** 
    * When creating, retrieve this instance's number from its arguments. 
    */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     mNum = getArguments() != null ? getArguments().getInt("num") : 1; 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View v = inflater.inflate(R.layout.list_layout, container, false); 
     return v; 
    } 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     setListAdapter(new ArrayAdapter<String>(getActivity(), 
       android.R.layout.simple_list_item_1, Arrays.accTEAMS)); 
    } 

    @Override 
    public void onListItemClick(ListView l, View v, int position, long id) { 
     super.onListItemClick(l, v, position, id); 
     Log.i("FragmentList", "Item clicked: " + id); 
    } 
} 

這是我ListFragments之一:

public class ACCfragment extends ListFragment { 
View v; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    return inflater.inflate(R.layout.list_layout, null); 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
} 

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), 
      android.R.layout.simple_list_item_1, Arrays.accTEAMS); 
    setListAdapter(adapter); 
} 

@Override 
public void onListItemClick(ListView l, View v, int position, long id) { 

} 
+0

你能告訴我們你所使用的API版本和支持你使用(如果有的話)包? FragmentPagerAdapter的規則可以根據這些版本而有所不同。 – losttime 2012-04-16 22:38:56

+1

您想與我們分享您的解決方案嗎? – 2013-03-03 17:14:04

回答

0

嘗試......

+0

這並不能解決我所遇到的問題。我無法爲每個頁面提供單獨的ListViews – ericcarboni 2012-04-12 02:35:48

+0

將公共視圖onCreateView(LayoutInflater inflater,ViewGroup容器,Bundle savedInstanceState)方法放在同一個開關中。對於每一個返回一個不同的XML。只要確保你能夠很好地記錄你所處的頁面,或者你將會獲得很多。 – jsb 2012-04-12 13:55:29

+0

但是因爲我使用不同的ListView片段,所以我沒有單獨的xml文件。我如何返回每個片段? – ericcarboni 2012-04-12 20:11:03

0

必須使用束片段之間發送PARAMS。

從片段1發送:

Bundle args = new Bundle(); 
args.putInt("my_integer",_stationId); 
FragmentManager fragmentManager = getFragmentManager(); 
FragmentTransaction ft = fragmentManager.beginTransaction(); 
Fragment fragment = Fragment.instantiate(getActivity(), Fragment2.class.getName(), args); 
ft.replace(R.id.layout, fragment); 
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); 
ft.commit(); 

接收和Fragment2獲得:

getArguments().getInt("my_integer") 
+0

我不是完全想要在我的片段之間發送任何東西..只是試圖在viewpager中的每個頁面上顯示不同的ListView片段 – ericcarboni 2012-04-13 00:13:00