您的位置:首页 > 其它

XRecyclerView的多条目请求数据,可以实现上拉加载下拉刷新

2017-10-24 07:29 417 查看
先要添加权限:

<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-
4000
permission>

先要添加依赖:

compile 'com.github.bumptech.glide:glide:3.7.0'
compile 'com.squareup.okio:okio:1.5.0'
compile 'com.squareup.okhttp3:okhttp:3.2.0'
compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'
compile 'com.google.code.gson:gson:2.8.2'
compile 'com.android.support:mediarouter-v7:25.0.0'
compile 'com.android.support:appcompat-v7:25.0.0'
compile 'com.android.support:recyclerview-v7:25.0.0'

compile 'com.jcodecraeer:xrecyclerview:1.3.2'


主布局的文件:

?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_xreca"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<com.jcodecraeer.xrecyclerview.XRecyclerView
android:layout_width="match_parent"
android:id="@+id/xre_xrv"
android:layout_height="match_parent">

</com.jcodecraeer.xrecyclerview.XRecyclerView>

</RelativeLayout>

MainActivity中:(有注释)

public class MainActivity extends AppCompatActivity {
private XRecyclerView xr;
private int curr;//获取数据开始
private List<String > list=new ArrayList<>();

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化XRecyclerView
xr = (XRecyclerView) findViewById(R.id.xre_xrv);
//加布局管理器
LinearLayoutManager layoutManager=new LinearLayoutManager(this);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
xr.setLayoutManager(layoutManager);

xr.setLoadingListener(new XRecyclerView.LoadingListener() {
@Override
public void onRefresh() {
curr=0;
list.clear();
getData(API.HOME_PATH,curr);
xr.refreshComplete();
}
//初始化数据

@Override
public void onLoadMore() {
/*   curr++;    分页
getData(API.TYPE_HOME,curr);
xr.refreshComplete();*/
}
});
getData(API.HOME_PATH,curr);
}
//初始化数据
private void getData(String homePath, int curr) {
OkHttp3Utils.getInstance().doGet(homePath, new GsonObjectCallback<OneBean>() {
@Override
public void onUi(OneBean oneBean) {
XRAdapter mxradapter=new XRAdapter(MainActivity.this,oneBean.getData());
xr.setAdapter(mxradapter);

}

@Override
public void onFailed(Call call, IOException e) {

}
});
}

}
适配器:(只写了一个轮播的适配)
public class XRAdapter extends RecyclerView.Adapter {
OneBean.DataBean data;
Context context;
ArrayList  mlist;//创建一个集合

//使用枚举,创建四个条目格式
private enum Item_Type{
Item_one,Item_two,Item_three,Item_four
}

public XRAdapter(Context context, OneBean.DataBean data) {
this.context = context;
this.data = data;
}

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == Item_Type.Item_one.ordinal()) {
View mView = LayoutInflater.from(context).inflate(R.layout.recycle_item_a, null);
ViewHolderA viewHolder = new ViewHolderA(mView);
return viewHolder;

} else if (viewType == Item_Type.Item_two.ordinal()) {

View mView = LayoutInflater.from(context).inflate(R.layout.recycle_item_b, null);
ViewHolderB viewHolder = new ViewHolderB(mView);
return viewHolder;
} else if (viewType == Item_Type.Item_three.ordinal()) {
View mView = LayoutInflater.from(context).inflate(R.layout.recycle_item_c, null);
ViewHolderC viewHolder = new ViewHolderC(mView);
return viewHolder;
}else if (viewType == Item_Type.Item_four.ordinal()) {
View mView = LayoutInflater.from(context).inflate(R.layout.recycle_item_d, null);
ViewHolderD viewHolder = new ViewHolderD(mView);
return viewHolder;
}
return null;
}
/**
* 绑定数据:可以直接拿到已经绑定控件的Viewholder对象
*
* @param holder
* @param position
*/
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
if (holder instanceof ViewHolderA) {
mlist=new ArrayList();
for(int i=0;i<data.getAd1().size();i++){
mlist.add(data.getAd1().get(i).getImage());
}

//设置图片加载器
((ViewHold
c01d
erA) holder).getMbanner().setImageLoader(new GlideImaGlideImageLoader());
((ViewHolderA) holder).getMbanner().setImages(mlist);
((ViewHolderA) holder).getMbanner().start();

} /*else if (holder instanceof ViewHolderB) {
((ViewHolderB) holder).text.setText(list.getDefaultGoodsList().get(position).getGoods_name() + "------样式二");
} else if (holder instanceof ViewHolderC) {
((ViewHolderC) holder).text.setText(list.getDefaultGoodsList().get(position).getGoods_name()+ "------样式三");
}else if (holder instanceof ViewHolderD) {
((ViewHolderD) holder).text.setText(list.getDefaultGoodsList().get(position).getGoods_name()+ "------样式4");
}*/
}

@Override
public int getItemCount() {
return 2;
}

@Override
public int getItemViewType(int position) {

if (position == 0) {
return Item_Type.Item_one.ordinal();
} else if (position == 1) {
return Item_Type.Item_two.ordinal();
} else if (position == 2) {
return Item_Type.Item_three.ordinal();
}else if (position == 3) {
return Item_Type.Item_four.ordinal();
}
return -1;
}

}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐