1.配置
先在 build.gradle(Project:XXXX) 的 repositories 添加(注意是allprojects位置内):
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}
复制代码
然后在 build.gradle(Module:app) 的 dependencies 添加:
dependencies {
implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.30'
}
复制代码
2.bean类
public class MultipleItem implements MultiItemEntity {
private int type;
private int spanSize;
private String content;
public MultipleItem(int type, int spanSize,String content) {
this.type = type;
this.spanSize = spanSize;
this.content=content;
}
public MultipleItem(int type, int spanSize) {
this.type = type;
this.spanSize = spanSize;
}
@Override
public int getItemType() {
return type;
}
public int getSpanSize() {
return spanSize;
}
public void setSpanSize(int spanSize) {
this.spanSize = spanSize;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
复制代码
3.activity中代码:
public class MultipleItemUseActivity extends BaseActivity {
private RecyclerView recyclerView;
List<MultipleItem> list;
MultipleItemQuickAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_multiple_item_use);
setTitle("MultipleItem Use");
setBackBtn();
recyclerView=findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new GridLayoutManager(this,4 ));
list = new ArrayList<>();
for (int i = 0; i <= 4; i++) {
list.add(new MultipleItem(2, 1));
list.add(new MultipleItem(1, 3, "nihao"));
list.add(new MultipleItem(3, 4));
list.add(new MultipleItem(3, 2));
list.add(new MultipleItem(3, 2));
}
adapter=new MultipleItemQuickAdapter(list);
adapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() {
@Override
public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) {
Toast.makeText(MultipleItemUseActivity.this, "点击了第:"+position+"个item", Toast.LENGTH_SHORT).show();
}
});
recyclerView.setAdapter(adapter);
}
}
复制代码
4.MultipleItemQuickAdapter类:
public class MultipleItemQuickAdapter extends BaseMultiItemQuickAdapter <MultipleItem, BaseViewHolder>{
public MultipleItemQuickAdapter(List<MultipleItem> data) {
super(data);
addItemType(1, R.layout.item_text_view);
addItemType(2, R.layout.item_image_view);
addItemType(3, R.layout.item_img_text_view);
}
@Override
protected void convert(BaseViewHolder helper, MultipleItem item) {
switch (helper.getItemViewType()) {
case 1:
helper.setText(R.id.tv1, item.getContent())
.addOnClickListener(R.id.tv1);
break;
case 2:
helper.setImageResource(R.id.iv, R.mipmap.ic_launcher)
.addOnClickListener(R.id.iv);
break;
case 3:
switch (helper.getLayoutPosition() % 2) {
case 0:
helper.setImageResource(R.id.iv, R.mipmap.animation_img1)
.addOnClickListener(R.id.iv);
break;
case 1:
helper.setImageResource(R.id.iv, R.mipmap.c)
.addOnClickListener(R.id.iv);
break;
default:
break;
}
break;
default:
break;
}
}
}
复制代码
5.资源文件
item_text_view.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView
android:id="@+id/card_view"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="90dp"
android:layout_gravity="center"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:foreground="?android:attr/selectableItemBackground"
card_view:cardBackgroundColor="@color/item_bg"
card_view:cardCornerRadius="4dp"
card_view:cardElevation="2dp"
card_view:cardUseCompatPadding="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="10dp"
android:orientation="vertical">
<TextView
android:id="@+id/tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@android:color/black"
android:textSize="18sp"
android:textStyle="bold"
/>
<TextView
android:id="@+id/tv1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textColor="@android:color/darker_gray"
android:textSize="14sp"
android:text="你好,大老李"
/>
</LinearLayout>
</androidx.cardview.widget.CardView>
复制代码
item_image_view.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/card_view"
android:layout_width="90dp"
android:layout_height="90dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_gravity="center"
android:foreground="?android:attr/selectableItemBackground"
card_view:cardBackgroundColor="@color/item_bg"
card_view:cardCornerRadius="4dp"
card_view:cardElevation="2dp"
card_view:cardUseCompatPadding="true">
<ImageView
android:id="@+id/iv"
android:layout_gravity="center"
android:layout_width="90dp"
android:layout_height="90dp"
android:src="@mipmap/ic_launcher"/>
</androidx.cardview.widget.CardView>
复制代码
item_img_text_view.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView
android:id="@+id/card_view"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="150dp"
android:layout_gravity="center"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:foreground="?android:attr/selectableItemBackground"
card_view:cardBackgroundColor="@color/item_bg"
card_view:cardCornerRadius="4dp"
card_view:cardElevation="2dp"
card_view:cardUseCompatPadding="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:id="@+id/iv"
android:layout_width="match_parent"
android:layout_height="116dp"
android:scaleType="centerCrop"
android:src="@mipmap/c" />
<TextView
android:id="@+id/tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@android:color/black"
android:textSize="18sp"
android:textStyle="bold"
android:gravity="center"
android:text="美好的"
/>
</LinearLayout>
</androidx.cardview.widget.CardView>
复制代码