XRecyclerView的使用
- 首先
导入我们的依赖(永恒不变的主题)
implementation 'com.android.support:recyclerview-v7:28.0.0'
implementation ('com.jcodecraeer:xrecyclerview:1.5.9'){
exclude group: 'com.android.support'
}
-
其次
这个我们导入依赖之后的使用方法很类似于我们的XlistView的使用 -
布局文件中
<com.jcodecraeer.xrecyclerview.XRecyclerView
android:id="@+id/xrecyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"></com.jcodecraeer.xrecyclerview.XRecyclerView>
- 代码
MainActivity中第一步大家肯定都会:找组件
xrecyclerView = (XRecyclerView) findViewById(R.id.xrecyclerView);
找完组件: 我这里采用的是mvp的实现数据的模式
加载点击
/**
*
* mvp实现数据
*/
goodsPresentle = new GoodsPresentle(this);
goodsPresentle.goodsShow(page);
/**
* xrecyclerView + 上拉下载
*/
//加载点击更多
xrecyclerView.setLoadingListener(this);
//瀑布流
StaggeredGridLayoutManager staggeredGridLayoutManager = new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL);
//设置管理
xrecyclerView.setLayoutManager(staggeredGridLayoutManager);
//设置适配器
xRecyclerViewAdapter = new XRecyclerViewAdapter(this,dataBeans);
xrecyclerView.setAdapter(xRecyclerViewAdapter);
//加载数据(刷新)开始刷新
xrecyclerView.refresh();
我们在最上面也需要实现监听
public class MainActivity extends AppCompatActivity implements XRecyclerView.LoadingListener,
完了之后爆红实现两个方法
@Override
public void onRefresh() {
page = 1;
goodsPresentle.goodsShow(page);
}
@Override
public void onLoadMore() {
page ++ ;
goodsPresentle.goodsShow(page);
}
在回调的方法里面刷新,下载完成
@Override
public void GoodsCall(Goods goods) {
xrecyclerView.refreshComplete();
xrecyclerView.loadMoreComplete();
List<Goods.DataBean> data = goods.getData();
dataBeans.addAll(data);
}
Activity中已经完成,其次就是适配器了.和我之前发的那篇RecyclerView基本一致
我们采用之前和ListView中的方法一样,把上下文和对象直接传递,
下面这句这就是…
xRecyclerViewAdapter = new XRecyclerViewAdapter(this,dataBeans);
适配器(和RecyclerView基本一致不过多细说)
public class XRecyclerViewAdapter extends RecyclerView.Adapter<XRecyclerViewAdapter.MyHolder> {
//创建mList
Context context;
List<Goods.DataBean> dataBeans = new ArrayList<>();
public XRecyclerViewAdapter(Context context, List<Goods.DataBean> dataBeans) {
this.context = context;
this.dataBeans = dataBeans;
}
@NonNull
@Override
public XRecyclerViewAdapter.MyHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(context).inflate(R.layout.item,viewGroup,false);
MyHolder myHolder = new MyHolder(view);
return myHolder;
}
@Override
public void onBindViewHolder(@NonNull XRecyclerViewAdapter.MyHolder myHolder, int i) {
double price = dataBeans.get(i).getPrice();
//String images = dataBeans.get(i).getImages();
String title = dataBeans.get(i).getTitle();
String url = dataBeans.get(i).getImages();
String[] split = url.split("\\|");
if (split.length > 0) {
Glide.with(context).load(split[0]).into(myHolder.itemIv);
}
myHolder.itemTv1.setText(price+"");
myHolder.itemTv2.setText(title);
}
@Override
public int getItemCount() {
return dataBeans.size();
}
public class MyHolder extends RecyclerView.ViewHolder {
private ImageView itemIv;
private TextView itemTv1;
private TextView itemTv2;
public MyHolder(@NonNull View itemView) {
super(itemView);
itemIv = (ImageView) itemView.findViewById(R.id.item_iv);
itemTv1 = (TextView) itemView.findViewById(R.id.item_tv1);
itemTv2 = (TextView) itemView.findViewById(R.id.item_tv2);
}
}
}
这样就实现了我们的简单使用.方法内的所需要的对象可以依据情况进行改变.