2013-02-18 85 views
2

我有我的ViewPagerIndicator 3個不同的佈局設置數據 - https://github.com/JakeWharton/Android-ViewPagerIndicator在ViewPagerIndicatorin不同的佈局

我的項目是從網站加載數據,並相應地設置數據到3個不同的佈局ViewPager的。

我該如何去實現它?

在我TestFragment,我有

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     Log.i("mContent", mContent); 
     View view = null; 
     if (mContent.equalsIgnoreCase("title1")) { 
      view = inflater.inflate(R.layout.one, container, false); 

     } else if (mContent.equalsIgnoreCase("title2")) { 
      view = inflater.inflate(R.layout.two, container, false); 
     } else if (mContent.equalsIgnoreCase("title3")) { 
      view = inflater.inflate(R.layout.three, container, false); 
      //Textview data = (TextView)view.findViewById(id) 
     } 
     return view; 
    } 

我知道這是根據fling'd標題設置佈局。 我知道如何找到ViewById來獲取小部件的id並設置數據。但是,數據在代碼本身中是靜態設置的。

對我來說,我必須從互聯網上抓取數據,並據此放入數據。我如何實現這一目標? 在此先感謝。

+0

在你的問題,你鏈接到'ViewPagerIndicator'大約在'ViewPager'設置數據/佈局(?)說話?你究竟想要做什麼? – Luksprog 2013-02-25 10:34:45

+0

對不起,我的意思是FragmentPager。 – MrYanDao 2013-02-27 04:05:38

+0

當數據擴展時,你想增加ViewPagerIndicator嗎? – 2013-02-27 07:24:37

回答

0

我有我的ViewPagerIndicator 3個不同的佈局

ViewPagerIndicator只是一個指標

我想你的意思是你viewadapter有三種視圖來顯示。

使用FragmentPagerAdapter來處理不同的視圖。 你應該閱讀ViewPagerIndicator samples

0

開始之前,從ViewPagerIndicator 複製樣本https://github.com/JakeWharton/Android-ViewPagerIndicator/tree/master/sample/src/com/viewpagerindicator/sample

要做的步驟是,

  1. 創建一個自定義的FragmentPagerAdapter(例如:https://github.com/JakeWharton/Android-ViewPagerIndicator/blob/master/sample/src/com/viewpagerindicator/sample/TestFragmentAdapter.java

  2. 爲每個佈局創建自定義片段(在您的案例3中) https://github.com/JakeWharton/Android-ViewPagerIndicator/blob/master/sample/src/com/viewpagerindicator/sample/TestFragment.java

  3. 覆蓋onActivityCreated片段中的類

onActivityCreated方法,U可以訪問UI組件作爲onCreate方法

好讓你可以做一個Web服務調用,綁定它適用於這部分中的UI組件。

乾杯

0

創建和實現LoaderAsyncTaskLoader)從互聯網加載數據。

有你TestFragment實施LoaderCallbacks,這樣當LoaderAsyncTaskLoader)已經從互聯網加載完成後數據就得到通知。

在你實現你的TestFragment的onActivityCreated,初始化或重新啓動裝載器:

getLoaderManager().initLoader(0, null, this); 

在你TestFragment的實施onLoadFinished,數據分配給小部件。

https://developer.android.com/reference/android/content/AsyncTaskLoader.html

https://developer.android.com/reference/android/app/LoaderManager.html

https://developer.android.com/reference/android/app/LoaderManager.LoaderCallbacks.html

1

我幾乎知道你want.Here是我的答案,它工作得很好。 您可以按照以下步驟。

1.創建三個不同的片段類,如LoadImageFragment1,LoadImageFragment2,LoadImageFragment3,所有這些的延伸片段。 以下是我的例子。

public class LoadImageFragment1 extends Fragment { 
ListView listView; 
LayoutInflater mInflater; 
LoadImageAdapter adapter; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    mInflater = inflater; 
    View view = inflater.inflate(R.layout.loadimage_layout, null); 
    listView = (ListView) view.findViewById(R.id.listview); 
    adapter = new LoadImageAdapter(); 
    adapter.initList(); 
    listView.setAdapter(adapter); 
    return view; 
} 

private class LoadImageAdapter extends BaseAdapter{ 
    ArrayList<String> list = new ArrayList<String>(); 

    public void initList(){ 
     for(int i = 0 ; i < 30;i ++){ 
      list.add("" + i); 
     } 
    } 

    @Override 
    public int getCount() { 

     return list.size(); 
    } 

    @Override 
    public Object getItem(int position) { 

     return position; 
    } 

    @Override 
    public long getItemId(int position) { 

     return position; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     if(convertView == null){ 
      convertView = mInflater.inflate(R.layout.loadimage_item, null); 
     } 
     return convertView; 
    } 

} 

2.然後修改SampleTabsDefault類。

class GoogleMusicAdapter extends FragmentPagerAdapter { 
    public GoogleMusicAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     // return TestFragment.newInstance(CONTENT[position % CONTENT.length]); 
     switch(position){ 
     case 0: 
      return new LoadImageFragment1(); 
     case 1: 
      return new LoadImageFragment2(); 
     case 2: 
      return new LoadImageFragment3(); 
     } 

    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     return CONTENT[position % CONTENT.length].toUpperCase(); 
    } 

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

而我只是使用SampleTabsDefault類作爲示例。您可以在其他類中執行此操作。 這裏我只是用一個ListView作爲樣本,可以從Internt的加載圖像和文字,你也可以在你的LoadImageAdapter的getView()方法做其他事情。 希望這可以幫助你。

+0

對不起,我的英語交際的差,GoogleMusicAdapter是一個內部類SampleTabsDefault.And的,你可以在ViewPagerIndicator找到他們 - https://github.com/JakeWharton/Android-ViewPagerIndicator – Joe 2013-02-28 10:01:46