Viewpager + GridView 嵌套使用
2017-01-05 16:43
751 查看
viewpager gridview 最主要是2个adapter的代码,其他的就不写了
首先是viewpage的adapter
public class BasePagerAdapter extends PagerAdapter {
protected static final String TAG = "BasePagerAdapter";
Context mContext;
List<App> app;
private int NUMCOLUMS = 6; //gridview 每一页显示几个
public MyGridView mGvYkj;
private View yunKongJianGridView;
public BasePagerAdapter(Context context, List<App> app) {
this.mContext = context;
this.app = app;
}
@Override
public int getCount() {
return getVpCount();
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
yunKongJianGridView = View.inflate(mContext,
R.layout.yunkongjiangridview, null);
mGvYkj = (MyGridView) yunKongJianGridView.findViewById(R.id.gv_ykj);
mGvYkj.setAdapter(new GridViewAdapter(mContext, app, position));
initListener(position);
container.addView(yunKongJianGridView);
return yunKongJianGridView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
public int getVpCount() {
if (app.size() % NUMCOLUMS == 0) {
return app.size() / NUMCOLUMS;
} else {
return app.size() / NUMCOLUMS + 1;
}
}
DownLoadServiceOKHttp3 downLoadServiceOKHttp3;
public void initListener(final int vpPosition) {
mGvYkj.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position,
long id) {
position = vpPosition * NUMCOLUMS + position;
}
});
}
gridview的adapter
public class GridViewAdapter extends BaseAdapter {
private static final String TAG = "GridViewAdapter";
Context mContext;
List<App> app;
int vpPosition;//viewpager当前是第几页
private int NUMCOLUMS = 6;gridview 每一页显示几个
public GridViewAdapter(Context context, List<App> app, int vpPosition
) {
this.mContext = context;
this.app = app;
this.vpPosition = vpPosition;
}
@Override
public int getCount() {
if (app.size() <= NUMCOLUMS) {
return app.size();
}
if (app.size() - vpPosition * NUMCOLUMS >= NUMCOLUMS) {
return NUMCOLUMS;
} else {
return app.size() % NUMCOLUMS;
}
}
@Override
public Object getItem(int position) {
return app.get(position + vpPosition * NUMCOLUMS);
}
@Override
public long getItemId(int position) {
return position + vpPosition * NUMCOLUMS;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
position = position + vpPosition * NUMCOLUMS;
ViewHodler viewHodler = null;
if (convertView == null) {
viewHodler = new ViewHodler();
convertView = View.inflate(mContext,
R.layout.yunkongjiangridchildview, null);
viewHodler.ivApp = (ImageView) convertView
.findViewById(R.id.iv_app);
viewHodler.pb = (RoundProgressBar) convertView
.findViewById(R.id.pb);
viewHodler.appName = (TextView) convertView
.findViewById(R.id.tv_appname);
convertView.setTag(viewHodler);
} else {
viewHodler = (ViewHodler) convertView.getTag();
}
//回显进度条,可忽略
String fileName = fileName(app.get(position).getDownUrl());
int downPosition = SPUtils.getInt(mContext, fileName(fileName), 0);
if (downPosition > 0 && downPosition < 100) {
viewHodler.pb.setVisibility(View.VISIBLE);
viewHodler.pb.setProgress(downPosition);
Log.d(TAG, position + "..");
} else {
viewHodler.pb.setVisibility(View.GONE);
viewHodler.pb.setProgress(0);
}
Glide.with(mContext)
.load(ApplicationConst.APP_DOWNLOAD_URL_PARENT_NEW
+ app.get(position).getIconUrl())
.into(viewHodler.ivApp);
viewHodler.appName.setText(app.get(position).getName());
return convertView;
}
class ViewHodler {
ImageView ivApp;
TextView appName;
RoundProgressBar pb;
}
public String fileName(String s) {
return s.substring(s.lastIndexOf("/"));
}
}
首先是viewpage的adapter
public class BasePagerAdapter extends PagerAdapter {
protected static final String TAG = "BasePagerAdapter";
Context mContext;
List<App> app;
private int NUMCOLUMS = 6; //gridview 每一页显示几个
public MyGridView mGvYkj;
private View yunKongJianGridView;
public BasePagerAdapter(Context context, List<App> app) {
this.mContext = context;
this.app = app;
}
@Override
public int getCount() {
return getVpCount();
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
yunKongJianGridView = View.inflate(mContext,
R.layout.yunkongjiangridview, null);
mGvYkj = (MyGridView) yunKongJianGridView.findViewById(R.id.gv_ykj);
mGvYkj.setAdapter(new GridViewAdapter(mContext, app, position));
initListener(position);
container.addView(yunKongJianGridView);
return yunKongJianGridView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
public int getVpCount() {
if (app.size() % NUMCOLUMS == 0) {
return app.size() / NUMCOLUMS;
} else {
return app.size() / NUMCOLUMS + 1;
}
}
DownLoadServiceOKHttp3 downLoadServiceOKHttp3;
public void initListener(final int vpPosition) {
mGvYkj.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position,
long id) {
position = vpPosition * NUMCOLUMS + position;
}
});
}
gridview的adapter
public class GridViewAdapter extends BaseAdapter {
private static final String TAG = "GridViewAdapter";
Context mContext;
List<App> app;
int vpPosition;//viewpager当前是第几页
private int NUMCOLUMS = 6;gridview 每一页显示几个
public GridViewAdapter(Context context, List<App> app, int vpPosition
) {
this.mContext = context;
this.app = app;
this.vpPosition = vpPosition;
}
@Override
public int getCount() {
if (app.size() <= NUMCOLUMS) {
return app.size();
}
if (app.size() - vpPosition * NUMCOLUMS >= NUMCOLUMS) {
return NUMCOLUMS;
} else {
return app.size() % NUMCOLUMS;
}
}
@Override
public Object getItem(int position) {
return app.get(position + vpPosition * NUMCOLUMS);
}
@Override
public long getItemId(int position) {
return position + vpPosition * NUMCOLUMS;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
position = position + vpPosition * NUMCOLUMS;
ViewHodler viewHodler = null;
if (convertView == null) {
viewHodler = new ViewHodler();
convertView = View.inflate(mContext,
R.layout.yunkongjiangridchildview, null);
viewHodler.ivApp = (ImageView) convertView
.findViewById(R.id.iv_app);
viewHodler.pb = (RoundProgressBar) convertView
.findViewById(R.id.pb);
viewHodler.appName = (TextView) convertView
.findViewById(R.id.tv_appname);
convertView.setTag(viewHodler);
} else {
viewHodler = (ViewHodler) convertView.getTag();
}
//回显进度条,可忽略
String fileName = fileName(app.get(position).getDownUrl());
int downPosition = SPUtils.getInt(mContext, fileName(fileName), 0);
if (downPosition > 0 && downPosition < 100) {
viewHodler.pb.setVisibility(View.VISIBLE);
viewHodler.pb.setProgress(downPosition);
Log.d(TAG, position + "..");
} else {
viewHodler.pb.setVisibility(View.GONE);
viewHodler.pb.setProgress(0);
}
Glide.with(mContext)
.load(ApplicationConst.APP_DOWNLOAD_URL_PARENT_NEW
+ app.get(position).getIconUrl())
.into(viewHodler.ivApp);
viewHodler.appName.setText(app.get(position).getName());
return convertView;
}
class ViewHodler {
ImageView ivApp;
TextView appName;
RoundProgressBar pb;
}
public String fileName(String s) {
return s.substring(s.lastIndexOf("/"));
}
}
相关文章推荐
- 关于ViewPager嵌套Fragment,Fragment使用GridView导致的问题
- 使用ViewPager和GridView配合,实现GridView横向水平滑动的效果。
- 使用viewpager嵌套实现上下左右滑动切换图片(IOS双向滚动翻页效果相同)
- Android ViewPager的嵌套使用
- 解决ScrollView嵌套ListView,GridView,ViewPager
- ViewPager+Fragment以及GridView的使用
- 使用ViewPager+GridView实现横向滑动的效果(一)
- ScrollView嵌套ListView,GridView,ViewPager,以及这些控件自动滚动到底部问题的解决
- ScorollView ViewPager gridView嵌套错误
- 使用RecyclerView实现多行水平分页的GridView效果和ViewPager效果
- 使用getChildFragmentManager解决Fragment嵌套ViewPager出现空白
- 使用ViewPager+GridView实现横向滑动的效果(二)
- listview 与 viewpager嵌套使用滑动冲突问题
- 关于ListView嵌套ViewPager,ViewPager嵌套GridView的一些问题。
- 高效地显示Bitmap图片 4 - 使用ViewPager与GridView显示图片
- 使用ViewPager+GridView实现横向滑动的效果(二)
- 使用pulltorefreshscrollview 嵌套 listview viewpager的配置方式
- Viewpager嵌套GridView的实现
- android listview嵌套viewpager,viewpager嵌套gridview,解决内嵌无法显示以及时间冲突的问题
- ScrollView嵌套ListView,GridView,ViewPager,以及这些控件自动滚动到底部问题的解决