XRecyclerView的多条目展示依赖:
1 implementation ‘com.android.support:design:28.+’
2 implementation ‘com.google.code.gson:gson:2.8.5’
3 implementation ‘com.github.bumptech.glide:glide:4.8.0’
4 implementation ‘com.squareup.okhttp3:okhttp:3.12.0’
5 implementation(‘com.jcodecraeer:xrecyclerview:1.5.9’) {
exclude group: ‘com.android.support’
}
6 implementation ‘com.squareup.okhttp3:logging-interceptor:3.4.1’
下面是activity-two布局 <com.jcodecraeer.xrecyclerview.XRecyclerView
android:id="@+id/xrecy"
android:layout_width="match_parent"
android:layout_height="match_parent" />
这个是垂直显示的布局加上(x号用于删除)![入这个图所视](https://img-blog.csdnimg.cn/20190119205348662.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3p4ZjE5OTcwMTA1,size_16,color_FFFFFF,t_70)
<?xml version="1.0" encoding="utf-8"?>
<TextView
android:id="@+id/del"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/text1"
android:layout_alignParentRight="true"
android:layout_gravity="center"
android:layout_marginTop="-9dp"
android:layout_marginRight="7dp"
android:text="X"
android:textColor="#000"
android:textSize="25dp" />
MVP就不写了,就是记得穿int i就行,下面就写下MyAdapter的页面:public class MyAdapter extends XRecyclerView.Adapter {
private List<MyData.DataBean> list;
private Context context;
private final int ONE_ITEM=1;
private final int TWO_ITEM=2;
public MyAdapter(List<MyData.DataBean> list, Context context) {
this.list = list;
this.context = context;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view=null;
XRecyclerView.ViewHolder holder=null;
switch (i){
case ONE_ITEM:垂直展示的布局
view = View.inflate(viewGroup.getContext(), R.layout.chiuzhi, null);
holder=new OneHolder(view);
break;
case TWO_ITEM:水平展示的布局
view=View.inflate(viewGroup.getContext(),R.layout.pingxing,null);
holder=new TwoHolder(view);
break;
}
return holder;
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
MyData.DataBean dataBean = list.get(i);
if (viewHolder instanceof OneHolder){//这个是条目和图片垂直展示的
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190119204919931.png)
((OneHolder)viewHolder).text11.setText(dataBean.getTitle());
Glide.with(context).load(dataBean.getThumbnail_pic_s()).into(((OneHolder)viewHolder).imagr11);
Glide.with(context).load(dataBean.getThumbnail_pic_s02()).into(((OneHolder)viewHolder).imagr11);
Glide.with(context).load(dataBean.getThumbnail_pic_s03()).into(((OneHolder)viewHolder).imagr11);
}else {
//这个是条目和图片平行展示的数据
((TwoHolder)viewHolder).text1.setText(dataBean.getTitle());
Glide.with(context).load(dataBean.getThumbnail_pic_s()).into(((TwoHolder) viewHolder).imagr1);
//点击button按钮弹出对话框删除和取消并刷新
((TwoHolder) viewHolder).delp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder dialog=new AlertDialog.Builder(context);
//获取AlertDialog对象
dialog.setTitle(“不再关注”);//设置标题
dialog.setMessage(“是定取消关注此类新闻?”);//设置信息具体内容
dialog.setCancelable(false);//设置是否可取消
dialog.setPositiveButton(“确定”, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
list.remove(i);
Toast.makeText(context, “您删除了第”+i+“条数据”, Toast.LENGTH_SHORT).show();
notifyDataSetChanged();
}
});
dialog.setNegativeButton(“取消”, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(context, “您取消啦”, Toast.LENGTH_SHORT).show();
notifyDataSetChanged();
}
});
dialog.show();
notifyDataSetChanged();
}
});
}
}
@Override
public int getItemCount() {
return list.size();
}
//这是判断哪个条目展示
@Override
public int getItemViewType(int position) {
if (position%2==0){
return ONE_ITEM;
}else {
return TWO_ITEM;
}
}
//第一个条目展示:手敲
class OneHolder extends XRecyclerView.ViewHolder{
TextView text11;
ImageView imagr11,imagr12,imagr13;
public OneHolder(@NonNull View itemView) {
super(itemView);
text11=itemView.findViewById(R.id.text11);
imagr11=itemView.findViewById(R.id.imagr11);
imagr12=itemView.findViewById(R.id.imagr12);
imagr13=itemView.findViewById(R.id.imagr13);
}
}
//第二个条目展示
class TwoHolder extends XRecyclerView.ViewHolder{
TextView text1;
ImageView imagr1;
Button delp
public TwoHolder(@NonNull View itemView) {
super(itemView);
text1=itemView.findViewById(R.id.text1);
imagr1=itemView.findViewById(R.id.imagr1);
这个是删除的按钮最好使用button
delp = itemView.findViewById(R.id.delp);
}
}
}
//下面是Mainactivity的页面
public class TwoActivity extends AppCompatActivity implements IView {
private XRecyclerView xrecy;
private PersenerImpl persener;
private ArrayList<MyData.DataBean> list=new ArrayList<>();
private String url="http://www.xieast.com/api/news/news.php?page=1";
private MyAdapter adapter;
主要是这个记得写 private int i=1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_two);
initView();
initData();
}
private void initData() {
persener = new PersenerImpl(this);
persener.setRequest(url,i);
adapter = new MyAdapter(list,this);
xrecy.setAdapter(adapter);
}
private void initView() {
xrecy = (XRecyclerView) findViewById(R.id.xrecy);
}
@Override
public void setData(MyData data) {
list.addAll(data.getData());
LinearLayoutManager manager=new LinearLayoutManager(this);
xrecy.setLayoutManager(manager);
adapter.notifyDataSetChanged();
xrecy.setLoadingListener(new XRecyclerView.LoadingListener() {
@Override
public void onRefresh() {
list.clear();
i=1;
persener.setRequest(url,i);
xrecy.refreshComplete();
}
@Override
public void onLoadMore() {
i++;
persener.setRequest(url,i);
xrecy.refreshComplete();
}
});
}
@Override
public void setError(String error) {
}
}