我的ViewPagerIndicator上有3种不同的布局 - https://github.com/JakeWharton/Android-ViewPagerIndicator
我的项目是从网站加载数据并相应地将数据设置为ViewPager的3种不同布局。
我如何实现目标?
在我的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;
}
我知道这是根据投票标题设置布局。 我知道如何findViewById来获取小部件的ID和设置数据。但是,数据在代码本身中静态设置。
对我来说,我必须从互联网上获取数据并相应地输入数据。我如何实现这一目标? 提前谢谢。
答案 0 :(得分:1)
我几乎知道你想要什么。这是我的答案,而且效果很好。 您可以按照以下步骤操作。
1.创建三个不同的Fragment类,如LoadImageFragment1,LoadImageFragment2,LoadImageFragment3,以及它们全部扩展Fragment。 跟随就是我的榜样。
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()方法中执行其他操作。 希望这可以帮到你。
答案 1 :(得分:0)
我的ViewPagerIndicator上有3种不同的布局
ViewPagerIndicator只是一个指标
我认为你的意思是你的viewadapter有三个观点要显示。
使用FragmentPagerAdapter处理不同的视图。 你应该阅读ViewPagerIndicator samples
答案 2 :(得分:0)
在开始之前,从ViewPagerIndicator复制样本 https://github.com/JakeWharton/Android-ViewPagerIndicator/tree/master/sample/src/com/viewpagerindicator/sample
要完成的步骤是,
创建自定义FragmentPagerAdapter(例如:https://github.com/JakeWharton/Android-ViewPagerIndicator/blob/master/sample/src/com/viewpagerindicator/sample/TestFragmentAdapter.java)
为每个布局创建自定义片段(在您的情况下为3) https://github.com/JakeWharton/Android-ViewPagerIndicator/blob/master/sample/src/com/viewpagerindicator/sample/TestFragment.java
覆盖片段类
onActivityCreated
醇>
在onActivityCreated
方法中,您可以像onCreate
方法一样访问UI组件
这样您就可以进行Web服务调用,将其绑定到此段中的UI组件。
干杯
答案 3 :(得分:0)
创建并实施Loader
(AsyncTaskLoader
)以从互联网加载数据。
让TestFragment
实施LoaderCallbacks
,以便在Loader
(AsyncTaskLoader
)完成从互联网上加载数据时收到通知。
在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