gradle dependencies { implementation 'me.drakeet.multitype:multitype:4.3.0' } <android.support.v7.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="match_parent" /> RecyclerView recyclerView = findViewById(R.id.recyclerView); MultiTypeAdapter adapter = new MultiTypeAdapter(); recyclerView.setAdapter(adapter); public class TextItem { public String text; } public class ImageItem { public int imageRes; } adapter.register(TextItem.class, new TextItemViewBinder()); adapter.register(ImageItem.class, new ImageItemViewBinder()); public class TextItemViewBinder extends ItemViewBinder<TextItem, TextItemViewBinder.ViewHolder> { @NonNull @Override protected ViewHolder onCreateViewHolder(@NonNull LayoutInflater inflater, @NonNull ViewGroup parent) { View view = inflater.inflate(R.layout.item_text, parent, false); return new ViewHolder(view); } @Override protected void onBindViewHolder(@NonNull ViewHolder holder, @NonNull TextItem item) { holder.textView.setText(item.text); } static class ViewHolder extends RecyclerView.ViewHolder { TextView textView; ViewHolder(View itemView) { super(itemView); textView = itemView.findViewById(R.id.textView); } } } public class ImageItemViewBinder extends ItemViewBinder<ImageItem, ImageItemViewBinder.ViewHolder> { @NonNull @Override protected ViewHolder onCreateViewHolder(@NonNull LayoutInflater inflater, @NonNull ViewGroup parent) { View view = inflater.inflate(R.layout.item_image, parent, false); return new ViewHolder(view); } @Override protected void onBindViewHolder(@NonNull ViewHolder holder, @NonNull ImageItem item) { holder.imageView.setImageResource(item.imageRes); } static class ViewHolder extends RecyclerView.ViewHolder { ImageView imageView; ViewHolder(View itemView) { super(itemView); imageView = itemView.findViewById(R.id.imageView); } } } TextItem textItem = new TextItem(); textItem.text = "Hello MultiType!"; adapter.addItem(textItem); ImageItem imageItem = new ImageItem(); imageItem.imageRes = R.drawable.image; adapter.addItem(imageItem);


上一篇:
下一篇:
切换中文