您的位置:首页 > 其它

封装ViewPager适配器简单封装

2017-06-05 13:04 351 查看
public class MainActivity extends AppCompatActivity {

// 数据源
static List<String> datas = new ArrayList<>();
static{
datas.add("java");
datas.add("android");
datas.add("ios");
datas.add("html5");
datas.add("https");
}

private CommonViewPagerAdapter mAdapter; // 适配器
private ViewPager mPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}

private void initView() {
mPager = (ViewPager)findViewById(R.id.vp);
mAdapter = new CommonViewPagerAdapter(datas, new ViewPagerHolderCreator() {
@Override
public ViewPagerHolder createViewHolder() {
return new MyViewPagerHolder();
}
});
mPager.setAdapter(mAdapter);
}

private class MyViewPagerHolder implements ViewPagerHolder<String>{
private TextView title;
@Override
public View createView(Context context) {
View view = LayoutInflater.from(context).inflate(R.layout.view_item, null);
title = (TextView) view.findViewById(R.id.tv_title);
return view;
}

@Override
public void onBind(Context context, int position, String data) {
title.setText(String.format("position:%d -- title:%s", position, data));
}
}
}

public class CommonViewPagerAdapter<T> extends PagerAdapter {
private List<T> mDatas;// 数据源
private ViewPagerHolderCreator mCreator; // 布局

public CommonViewPagerAdapter(List<T> datas, ViewPagerHolderCreator creator){
this.mDatas = datas;
this.mCreator = creator;
}

@Override
public int getCount() {
return mDatas.size();
}

@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}

@Override
public Object instantiateItem(ViewGroup container, int position) {
// 重点在这儿了,不要把布局写死,而是通过接口提供布局
// 也不再这里绑定数,数据绑定交个A调用者
View view = getView(position, null, container);
container.addView(view);
return view;
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}

private View getView(int position , View view, ViewGroup container){
ViewPagerHolder holder = null;
if (holder == null){
holder = mCreator.createViewHolder();
view = holder.createView(container.getContext());
view.setTag(R.id.common_view_pager_item_tag, holder);
}else{
holder = (ViewPagerHolder) view.getTag(R.id.common_view_pager_item_tag);
}

if(holder != null && mDatas != null && mDatas.size() > 0){
holder.onBind(container.getContext(), position, mDatas.get(position));
}

return view;

}
}


public interface ViewPagerHolder<T> {
/**
* 创建View
* @param context
* @return
*/
View createView(Context context);

/**
* 绑定数
* @param context
* @param position
* @param data
*/
void onBind(Context context, int position, T data);

}

public interface ViewPagerHolderCreator<VH extends ViewPagerHolder> {
/**
* 创建ViewHolder
* @return
*/
VH createViewHolder();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: