listview是单列的,gridview是多列的,recycleview是多列的,可垂直可水平,平时多用recycleview,因为这个很实用
适配器分多类型和单类型的,比如说加载没有图片的item,加载一个图片的item,加载两个图片的item,加载三个图片的item
这个就是recycleview的多类型
DynamicMoreTypeAdapter
package com.meetdilse.store.ui.adapter;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import com.meetdilse.store.R;
import com.meetdilse.store.data.Dynamic;
import com.meetdilse.store.glide.CircleCropTransform;
import com.meetdilse.store.glide.RoundedCornersTransform;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import static com.meetdilse.store.BaseApplication.getContext;
public class DynamicMoreTypeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {//继承于RecyclerView,还要写RecyclerView.ViewHolder
private static final int THREE_IMAGE = 3;
private static final int TWO_IMAGE = 2;
private static final int ONE_IMAGE = 1;
private static final int NO_IMAGE = 0;
private Context mContext;
private List<Dynamic> mData;
public DynamicMoreTypeAdapter(Context mContext) {//构造函数,给类被调用时,该方法就会被调用
this.mContext = mContext;//传context进来,activity的context就是对应的那个界面
mData = new ArrayList<>();//初始化mData,用来保存从activity那边传来的数据的
}
public void addAll(List<Dynamic> list) {//添加多个数据的方法
mData.addAll(list);//调用方法后就会添加数据到mData
notifyDataSetChanged();//刷新
}
static class TestHolder0 extends RecyclerView.ViewHolder {//这里专门用来findviewbyid的,继承于这个holder,就可以自动添加这部分代码,要用static
TextView name;
ImageView avater;
TextView dyAge;
TextView dyPlace;
TextView dyTitle;
ImageView dyPhoto;
ImageView dyPhoto2;
TextView dyAddTime;
public TestHolder0(@NonNull View itemView) {//总共四个holder,对应四个类型
super(itemView);
name = itemView.findViewById(R.id.tv_dy_name);
avater = itemView.findViewById(R.id.iv_dy_avater);
dyAge = itemView.findViewById(R.id.tv_dy_age);
dyPlace = itemView.findViewById(R.id.tv_dy_place);
dyTitle = itemView.findViewById(R.id.tv_dy_write);
dyPhoto = itemView.findViewById(R.id.iv_dy);
dyPhoto2 = itemView.findViewById(R.id.iv_dy2);
dyAddTime = itemView.findViewById(R.id.tv_time);
}
}
static class TestHolder1 extends RecyclerView.ViewHolder {
TextView name;
ImageView avater;
TextView dyAge;
TextView dyPlace;
TextView dyTitle;
ImageView dyPhoto;
ImageView dyPhoto2;
TextView dyAddTime;
public TestHolder1(@NonNull View itemView) {
super(itemView);
name = itemView.findViewById(R.id.tv_dy_name);
avater = itemView.findViewById(R.id.iv_dy_avater);
dyAge = itemView.findViewById(R.id.tv_dy_age);
dyPlace = itemView.findViewById(R.id.tv_dy_place);
dyTitle = itemView.findViewById(R.id.tv_dy_write);
dyPhoto = itemView.findViewById(R.id.iv_dy);
dyPhoto2 = itemView.findViewById(R.id.iv_dy2);
dyAddTime = itemView.findViewById(R.id.tv_time);
}
}
static class TestHolder2 extends RecyclerView.ViewHolder {
TextView name;
ImageView avater;
TextView dyAge;
TextView dyPlace;
TextView dyTitle;
ImageView dyPhoto;
ImageView dyPhoto2;
TextView dyAddTime;
public TestHolder2(@NonNull View itemView) {
super(itemView);
name = itemView.findViewById(R.id.tv_dy_name);
avater = itemView.findViewById(R.id.iv_dy_avater);
dyAge = itemView.findViewById(R.id.tv_dy_age);
dyPlace = itemView.findViewById(R.id.tv_dy_place);
dyTitle = itemView.findViewById(R.id.tv_dy_write);
dyPhoto = itemView.findViewById(R.id.iv_dy);
dyPhoto2 = itemView.findViewById(R.id.iv_dy2);
dyAddTime = itemView.findViewById(R.id.tv_time);
}
}
static class TestHolder3 extends RecyclerView.ViewHolder {
TextView name;
ImageView avater;
TextView dyAge;
TextView dyPlace;
TextView dyTitle;
ImageView dyPhoto;
ImageView dyPhoto2;
ImageView dyPhoto3;
TextView dyAddTime;
public TestHolder3(@NonNull View itemView) {
super(itemView);
name = itemView.findViewById(R.id.tv_dy_name);
avater = itemView.findViewById(R.id.iv_dy_avater);
dyAge = itemView.findViewById(R.id.tv_dy_age);
dyPlace = itemView.findViewById(R.id.tv_dy_place);
dyTitle = itemView.findViewById(R.id.tv_dy_write);
dyPhoto = itemView.findViewById(R.id.iv_dy);
dyPhoto2 = itemView.findViewById(R.id.iv_dy2);
dyPhoto3 = itemView.findViewById(R.id.iv_dy3);
dyAddTime = itemView.findViewById(R.id.tv_time);
}
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
//涓嶅悓绫诲瀷杩斿洖涓嶅悓鐨勫竷灞€
Context context = parent.getContext();//反正就是要传parent.getcontext
if (viewType == NO_IMAGE) {//不同的类型对应不用的布局
return new TestHolder0(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_mydynamic0, parent, false));
}
if (viewType == ONE_IMAGE) {
return new TestHolder1(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_mydynamic, parent, false));
}
if (viewType == TWO_IMAGE) {
return new TestHolder2(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_mydynamic2, parent, false));
}
if (viewType == THREE_IMAGE) {
return new TestHolder3(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_mydynamic3, parent, false));
}
return new TestHolder0(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_mydynamic0, parent, false));
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {//绑定控件就是对控件添加数据
//鍦ㄩ噷闈㈣繘琛屽搴旂被鍨嬪竷灞€鐨勬暟鎹樉绀?
Log.v("position", String.valueOf(position));
int itemViewType = getItemViewType(position);
if (itemViewType == NO_IMAGE) {//娌℃湁鍥剧墖鐨勫竷灞€
TestHolder0 holder1 = (TestHolder0) holder;
holder1.name.setText(mData.get(position).getUserInfo().getUserNickname());
holder1.dyPlace.setText(mData.get(position).getCity());
holder1.dyTitle.setText(mData.get(position).getTitle());
RoundedCornersTransform roundedCornersTransform = new RoundedCornersTransform(6);
RequestOptions requestOptions = RequestOptions.bitmapTransform(roundedCornersTransform);
Date day = new Date();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String now = df.format(day);
try {
Date now1 = df.parse(now);
long second = mData.get(position).getUserInfo().getBirthday();
String dateString = secondToDate(second, "yyyy-MM-dd hh:mm:ss");
Date birthday1 = df.parse(dateString);
int age = now1.getYear() - birthday1.getYear();
holder1.dyAge.setText(String.valueOf(age));
long addTime = mData.get(position).getAddTime();
String addTimes = secondToDate(addTime, "yyyy-MM-dd hh:mm:ss");
String year = addTimes.substring(0, 4);
String month = addTimes.substring(5, 7);
String day1 = addTimes.substring(8, 10);
holder1.dyAddTime.setText(year + "/" + month + "/" + day1);
Log.v("addtime2", addTimes);
} catch (ParseException e) {
e.printStackTrace();
}
CircleCropTransform circleCropTransform = new CircleCropTransform();
RequestOptions options = RequestOptions.bitmapTransform(circleCropTransform);
Glide.with(mContext).load(mData.get(position).getUserInfo().getAvatar()).apply(options).into(holder1.avater);
} else if (itemViewType == ONE_IMAGE) {//涓€寮犲浘鐗囩殑甯冨眬
TestHolder1 holder2 = (TestHolder1) holder;
holder2.name.setText(mData.get(position).getCity());
holder2.name.setText(mData.get(position).getUserInfo().getUserNickname());
holder2.dyPlace.setText(mData.get(position).getCity());
holder2.dyTitle.setText(mData.get(position).getTitle());
RoundedCornersTransform roundedCornersTransform = new RoundedCornersTransform(6);
RequestOptions requestOptions = RequestOptions.bitmapTransform(roundedCornersTransform);
Date day = new Date();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String now = df.format(day);
try {
Date now1 = df.parse(now);
long second = mData.get(position).getUserInfo().getBirthday();
String dateString = secondToDate(second, "yyyy-MM-dd hh:mm:ss");
Date birthday1 = df.parse(dateString);
int age = now1.getYear() - birthday1.getYear();
holder2.dyAge.setText(String.valueOf(age));
long addTime = mData.get(position).getAddTime();
String addTimes = secondToDate(addTime, "yyyy-MM-dd hh:mm:ss");
String year = addTimes.substring(0, 4);
String month = addTimes.substring(5, 7);
String day1 = addTimes.substring(8, 10);
holder2.dyAddTime.setText(year + "/" + month + "/" + day1);
Log.v("addtime2", addTimes);
} catch (ParseException e) {
e.printStackTrace();
}
CircleCropTransform circleCropTransform = new CircleCropTransform();
RequestOptions options = RequestOptions.bitmapTransform(circleCropTransform);
Glide.with(mContext).load(mData.get(position).getUserInfo().getAvatar()).apply(options).into(holder2.avater);
Glide.with(mContext).load(mData.get(position).getUserInfo().getAvatar()).apply(requestOptions).into(holder2.dyPhoto);
} else if (itemViewType == TWO_IMAGE) {//涓ゅ紶鍥剧墖鐨勫竷灞€
TestHolder2 holder3 = (TestHolder2) holder;
holder3.name.setText(mData.get(position).getCity());
holder3.name.setText(mData.get(position).getUserInfo().getUserNickname());
holder3.dyPlace.setText(mData.get(position).getCity());
holder3.dyTitle.setText(mData.get(position).getTitle());
RoundedCornersTransform roundedCornersTransform = new RoundedCornersTransform(6);
RequestOptions requestOptions = RequestOptions.bitmapTransform(roundedCornersTransform);
Date day = new Date();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String now = df.format(day);
try {
Date now1 = df.parse(now);
long second = mData.get(position).getUserInfo().getBirthday();
String dateString = secondToDate(second, "yyyy-MM-dd hh:mm:ss");
Date birthday1 = df.parse(dateString);
int age = now1.getYear() - birthday1.getYear();
holder3.dyAge.setText(String.valueOf(age));
long addTime = mData.get(position).getAddTime();
String addTimes = secondToDate(addTime, "yyyy-MM-dd hh:mm:ss");
String year = addTimes.substring(0, 4);
String month = addTimes.substring(5, 7);
String day1 = addTimes.substring(8, 10);
holder3.dyAddTime.setText(year + "/" + month + "/" + day1);
Log.v("addtime2", addTimes);
} catch (ParseException e) {
e.printStackTrace();
}
CircleCropTransform circleCropTransform = new CircleCropTransform();
RequestOptions options = RequestOptions.bitmapTransform(circleCropTransform);
Glide.with(mContext).load(mData.get(position).getUserInfo().getAvatar()).apply(options).into(holder3.avater);
Glide.with(mContext).load(mData.get(position).getPics().get(0)).apply(requestOptions).into(holder3.dyPhoto);
Glide.with(mContext).load(mData.get(position).getPics().get(1)).apply(requestOptions).into(holder3.dyPhoto2);
} else if (itemViewType == THREE_IMAGE) {//涓夊紶鍥剧墖浠ヤ笂鐨勫竷灞€
TestHolder3 holder4 = (TestHolder3) holder;
holder4.name.setText(mData.get(position).getUserInfo().getUserNickname());
holder4.dyPlace.setText(mData.get(position).getCity());
holder4.dyTitle.setText(mData.get(position).getTitle());
RoundedCornersTransform roundedCornersTransform = new RoundedCornersTransform(6);
RequestOptions requestOptions = RequestOptions.bitmapTransform(roundedCornersTransform);
Date day = new Date();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String now = df.format(day);
try {
Date now1 = df.parse(now);
long second = mData.get(position).getUserInfo().getBirthday();
String dateString = secondToDate(second, "yyyy-MM-dd hh:mm:ss");
Date birthday1 = df.parse(dateString);
int age = now1.getYear() - birthday1.getYear();
holder4.dyAge.setText(String.valueOf(age));
long addTime = mData.get(position).getAddTime();
String addTimes = secondToDate(addTime, "yyyy-MM-dd hh:mm:ss");
String year = addTimes.substring(0, 4);
String month = addTimes.substring(5, 7);
String day1 = addTimes.substring(8, 10);
holder4.dyAddTime.setText(year + "/" + month + "/" + day1);
Log.v("addtime2", addTimes);
} catch (ParseException e) {
e.printStackTrace();
}
CircleCropTransform circleCropTransform = new CircleCropTransform();
RequestOptions options = RequestOptions.bitmapTransform(circleCropTransform);
Glide.with(mContext).load(mData.get(position).getUserInfo().getAvatar()).apply(options).into(holder4.avater);
Glide.with(mContext).load(mData.get(position).getPics().get(0)).apply(requestOptions).into(holder4.dyPhoto);
Glide.with(mContext).load(mData.get(position).getPics().get(1)).apply(requestOptions).into(holder4.dyPhoto2);
Glide.with(mContext).load(mData.get(position).getPics().get(2)).apply(requestOptions).into(holder4.dyPhoto3);
}
}
@Override
public int getItemCount() {
return mData.size();
}
@Override
public int getItemViewType(int position) {//类型,这里面放每种情况返回的类型
//鏍规嵁鏁版嵁閲岀殑闀垮害杩斿洖鐩稿簲鐨勭被鍨?
int pic = mData.get(position).getPics().size();//判断数据里的长度,不同的情况放回不同的类型
if (pic == 0) {
return NO_IMAGE;
}
if (pic == 1) {
return ONE_IMAGE;
}
if (pic == 2) {
return TWO_IMAGE;
}
if (pic >= 3) {
return THREE_IMAGE;
}
return super.getItemViewType(position);
}
/**
* 鏃堕棿鎴宠浆鏃ユ湡
* @param second
* @param patten
* @return
*/
private String secondToDate(long second,String patten) {
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(second * 1000);//杞崲涓烘绉?
Date date = calendar.getTime();
SimpleDateFormat format = new SimpleDateFormat(patten);
String dateString = format.format(date);
return dateString;
}
}
使用方法
这个就是recycleview的单类型
RecycleViewAdapter(没有使用到)
package com.meetdilse.store.ui.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.meetdilse.store.R;
import com.meetdilse.store.data.PersonalDetailsPhoto;
import java.util.ArrayList;
import java.util.List;
public class RecycleViewAdapter extends RecyclerView.Adapter<RecycleViewAdapter.MyHolder> {//recycleview,这个适配器只有一种类型的
private List<PersonalDetailsPhoto> mData;
private Context mContext;
ImageView imageView;
public RecycleViewAdapter(Context c) {//构造函数,给类被调用时,该方法就会被调用
mContext = c;//传context进来,activity的context就是对应的那个界面
mData = new ArrayList<>();//初始化mData,用来保存从activity那边传来的数据的
}
public void addAll(List<PersonalDetailsPhoto> list) {//添加多个数据的方法
mData.addAll(list);//调用方法后就会添加数据到mData
notifyDataSetChanged();//刷新
}
class MyHolder extends RecyclerView.ViewHolder {//holder绑定控件
public MyHolder(View itemView) {
super(itemView);
imageView = itemView.findViewById(R.id.iv_person_photo);
}
}
@NonNull
@Override
public MyHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {//创建视图,绑定布局
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_dynamic_photo, parent, false);
MyHolder holder = new MyHolder(view);
return holder;
}
@Override
public void onBindViewHolder(@NonNull MyHolder holder, int position) {//数据绑定控件
PersonalDetailsPhoto dataBean = mData.get(position);
Glide.with(mContext).load(dataBean.getThumb()).into(imageView);
}
@Override
public int getItemCount() {
return mData.size();//数据的长度
}
}
GridView的单类型,多行两列
DiscoverAlbumAdpter
package com.meetdilse.store.ui.adapter;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.MultiTransformation;
import com.bumptech.glide.request.RequestOptions;
import com.meetdilse.store.R;
import com.meetdilse.store.data.DiscoverAlbum;
import com.meetdilse.store.glide.CircleCropTransform;
import com.meetdilse.store.glide.RoundedCornersTransform;
import java.util.ArrayList;
import java.util.List;
import jp.wasabeef.glide.transformations.BlurTransformation;
/**
* @author ..0
* 适配器,继承自BaseAdapter
*/
public class DiscoverAlbumAdpter extends BaseAdapter {
private List<DiscoverAlbum> mData;
//定义Context
private Context mContext;
public DiscoverAlbumAdpter(Context c) {//在构造函数里面初始化mcontext和数据,activity跟适配器关联就靠这个context了,会传界面过来的
mContext = c;
mData = new ArrayList<>();//初始化列表mdata,用来存activity传来的值
}
public void add(DiscoverAlbum e) {//添加一个值的方法
mData.add(e);
notifyDataSetChanged();
}
public void addAll(List<DiscoverAlbum> list) {//添加多个值的方法
mData.addAll(list);//调用addall方法,将activity传过来的值赋值给mdata
notifyDataSetChanged();//刷新
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mData.size();//数量就是数据的个数
}
@Override
public DiscoverAlbum getItem(int position) {
// TODO Auto-generated method stub
return mData.get(position);//获取一整个item就是数据通过position取值
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;//ID就是position
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {//这里就是绑定控件操作的地方
// TODO Auto-generated method stub
View view = LayoutInflater.from(mContext).inflate(R.layout.item_discover_album, parent, false);
RoundedCornersTransform roundedCorners = new RoundedCornersTransform(6);
RequestOptions options = RequestOptions.bitmapTransform(roundedCorners);
CircleCropTransform roundedCorners2 = new CircleCropTransform(TypedValue.COMPLEX_UNIT_PX, 1, Color.WHITE);
RequestOptions options2 = RequestOptions.bitmapTransform(roundedCorners2);
DiscoverAlbum dataBean = mData.get(position);
ImageView imageView=view.findViewById(R.id.iv_al);
ImageView iv_pos=view.findViewById(R.id.iv_pos);
TextView tv_pos=view.findViewById(R.id.tv_pos);
TextView tvCoin=view.findViewById(R.id.tv_coin);
tvCoin.setText(String.valueOf(dataBean.getCoin()));
ImageView ivLock = view.findViewById(R.id.iv_lock);
//设置价格
tvCoin.setText(String.valueOf(dataBean.getCoin()));
tvCoin.setVisibility(dataBean.getCoin() > 0 ? View.VISIBLE : View.INVISIBLE);
//是否是否可见
ivLock.setVisibility(dataBean.getCansee()?View.INVISIBLE:View.VISIBLE);
Glide.with(mContext).load(dataBean.getThumb()).apply(options).into(imageView);
Glide.with(mContext).load(dataBean.getThumb()).apply(options2).into(iv_pos);
tv_pos.setText(dataBean.getUinfo().getUser_nickname());
if (dataBean.getCansee()) {
Glide.with(mContext)
.load(dataBean.getUinfo().getAvatar())
.error(new ColorDrawable(Color.parseColor("#EDEDED")))
.placeholder(new ColorDrawable(Color.parseColor("#EDEDED")))
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransform(6)))
.into(imageView);
} else {
MultiTransformation<Bitmap> bitmapMultiTransformation = new MultiTransformation<>(
new BlurTransformation(25, 3),
new RoundedCornersTransform(6)
);
Glide.with(mContext)
.load(dataBean.getUinfo().getAvatar())
.error(new ColorDrawable(Color.parseColor("#EDEDED")))
.placeholder(new ColorDrawable(Color.parseColor("#EDEDED")))
.apply(RequestOptions.bitmapTransform(bitmapMultiTransformation))
.into(imageView);
}
return view;
}
}
GridView的单类型,多行两列
DiscoverAlbumAdpter
package com.meetdilse.store.ui.adapter;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.MultiTransformation;
import com.bumptech.glide.request.RequestOptions;
import com.meetdilse.store.R;
import com.meetdilse.store.data.DiscoverAlbum;
import com.meetdilse.store.glide.CircleCropTransform;
import com.meetdilse.store.glide.RoundedCornersTransform;
import java.util.ArrayList;
import java.util.List;
import jp.wasabeef.glide.transformations.BlurTransformation;
/**
* @author ..0
* 适配器,继承自BaseAdapter
*/
public class DiscoverAlbumAdpter extends BaseAdapter {//继承于基类适配器
private List<DiscoverAlbum> mData;
//定义Context
private Context mContext;
public DiscoverAlbumAdpter(Context c) {//构造函数,给类被调用时,该方法就会被调用
mContext = c;//传context进来,activity的context就是对应的那个界面
mData = new ArrayList<>();//初始化mData,用来保存从activity那边传来的数据的
}
public void add(DiscoverAlbum e) {//添加一个数据的方法
mData.add(e);//调用方法后就会添加数据到mData
notifyDataSetChanged();//刷新
}
public void addAll(List<DiscoverAlbum> list) {//添加多个数据的方法
mData.addAll(list);//调用方法后就会添加数据到mData
notifyDataSetChanged();//刷新
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mData.size();//数据的长度
}
@Override
public DiscoverAlbum getItem(int position) {
// TODO Auto-generated method stub
return mData.get(position);//获取item的数据,从服务器返回数据中通过position获取对应位置的数据
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;//获取item的ID,那就是position了
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {//getview就是进行操作的地方
// TODO Auto-generated method stub
View view = LayoutInflater.from(mContext).inflate(R.layout.item_discover_album, parent, false);//像fragment那样子写
RoundedCornersTransform roundedCorners = new RoundedCornersTransform(6);//圆角
RequestOptions options = RequestOptions.bitmapTransform(roundedCorners);
CircleCropTransform roundedCorners2 = new CircleCropTransform(TypedValue.COMPLEX_UNIT_PX, 1, Color.WHITE);//圆形
RequestOptions options2 = RequestOptions.bitmapTransform(roundedCorners2);
DiscoverAlbum dataBean = mData.get(position);//activity传进来的数据,通过position赋值给dataBean
ImageView imageView=view.findViewById(R.id.iv_al);
ImageView iv_pos=view.findViewById(R.id.iv_pos);
TextView tv_pos=view.findViewById(R.id.tv_pos);
TextView tvCoin=view.findViewById(R.id.tv_coin);
tvCoin.setText(String.valueOf(dataBean.getCoin()));
ImageView ivLock = view.findViewById(R.id.iv_lock);
//设置价格
tvCoin.setText(String.valueOf(dataBean.getCoin()));//设置文字
tvCoin.setVisibility(dataBean.getCoin() > 0 ? View.VISIBLE : View.INVISIBLE);//设置是否可见,根据服务器给的数据,如果大于0就可见,如果不大于0,就不可见
//是否是否可见
ivLock.setVisibility(dataBean.getCansee()?View.INVISIBLE:View.VISIBLE);
Glide.with(mContext).load(dataBean.getThumb()).apply(options).into(imageView);//glide显示图片
Glide.with(mContext).load(dataBean.getThumb()).apply(options2).into(iv_pos);
tv_pos.setText(dataBean.getUinfo().getUser_nickname());
if (dataBean.getCansee()) {//判断服务器给的字段是0还是1,如果是1就不添加高斯模糊
Glide.with(mContext)
.load(dataBean.getUinfo().getAvatar())
.error(new ColorDrawable(Color.parseColor("#EDEDED")))
.placeholder(new ColorDrawable(Color.parseColor("#EDEDED")))
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransform(6)))
.into(imageView);
} else {//否则添加高斯模糊
MultiTransformation<Bitmap> bitmapMultiTransformation = new MultiTransformation<>(
new BlurTransformation(25, 3),
new RoundedCornersTransform(6)
);
Glide.with(mContext)
.load(dataBean.getUinfo().getAvatar())
.error(new ColorDrawable(Color.parseColor("#EDEDED")))
.placeholder(new ColorDrawable(Color.parseColor("#EDEDED")))
.apply(RequestOptions.bitmapTransform(bitmapMultiTransformation))
.into(imageView);
}
return view;
}
}
使用方法
GridView的单类型,多行两列
DiscoverMovieAdpter
package com.meetdilse.store.ui.adapter;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.MultiTransformation;
import com.bumptech.glide.request.RequestOptions;
import com.meetdilse.store.R;
import com.meetdilse.store.data.DiscoverMovie;
import com.meetdilse.store.glide.CircleCropTransform;
import com.meetdilse.store.glide.RoundedCornersTransform;
import java.util.ArrayList;
import java.util.List;
import jp.wasabeef.glide.transformations.BlurTransformation;
/**
* @author ..0
* 适配器,继承自BaseAdapter
*/
public class DiscoverMovieAdpter extends BaseAdapter {
private List<DiscoverMovie> mData;
//定义Context
private Context mContext;
public DiscoverMovieAdpter() {
}
public DiscoverMovieAdpter(Context c) {//构造函数,给类被调用时,该方法就会被调用
mContext = c;//传context进来,activity的context就是对应的那个界面
mData = new ArrayList<>();//初始化mData,用来保存从activity那边传来的数据的
}
public void add(DiscoverMovie e) {//添加一个数据的方法//调用方法后就会添加数据到mData
mData.add(e);//调用方法后就会添加数据到mData
notifyDataSetChanged();//刷新
}
public void addAll(List<DiscoverMovie> list) {//添加多个数据的方法
mData.addAll(list);//调用方法后就会添加数据到mData
notifyDataSetChanged();//刷新
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mData.size();//数据的长度
}
@Override
public DiscoverMovie getItem(int position) {
// TODO Auto-generated method stub
return mData.get(position);//获取item的数据,从服务器返回数据中通过position获取对应位置的数据
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;//获取item的ID,那就是position了
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {//getview就是进行操作的地方
// TODO Auto-generated method stub
View view = LayoutInflater.from(mContext).inflate(R.layout.item_discover_movie, parent, false);
DiscoverMovie dataBean = mData.get(position);
ImageView imageView=view.findViewById(R.id.iv_al);
ImageView iv_pos=view.findViewById(R.id.iv_pos);
TextView tv_pos=view.findViewById(R.id.tv_pos);
TextView tvCoin=view.findViewById(R.id.tv_coin);
tvCoin.setText(String.valueOf(dataBean.getCoin()));
ImageView ivLock = view.findViewById(R.id.iv_lock);
CircleCropTransform roundedCorners2 = new CircleCropTransform(TypedValue.COMPLEX_UNIT_PX, 1, Color.WHITE);
RequestOptions options2 = RequestOptions.bitmapTransform(roundedCorners2);
// Glide.with(mContext).load(dataBean.getUinfo().getAvatar()).into(imageView);
//设置价格
tvCoin.setText(String.valueOf(dataBean.getCoin()));
tvCoin.setVisibility(dataBean.getCoin() > 0 ? View.VISIBLE : View.INVISIBLE);
//是否是否可见
ivLock.setVisibility(dataBean.getCansee()?View.INVISIBLE:View.VISIBLE);
Glide.with(mContext).load(dataBean.getUinfo().getAvatar()).apply(options2).into(iv_pos);
tv_pos.setText(dataBean.getUinfo().getUserNickname());
if (dataBean.getCansee()) {
Glide.with(mContext)
.load(dataBean.getUinfo().getAvatar())
.error(new ColorDrawable(Color.parseColor("#EDEDED")))
.placeholder(new ColorDrawable(Color.parseColor("#EDEDED")))
.into(imageView);
} else {
MultiTransformation<Bitmap> bitmapMultiTransformation = new MultiTransformation<>(
new BlurTransformation(25, 3)
);
Glide.with(mContext)
.load(dataBean.getUinfo().getAvatar())
.error(new ColorDrawable(Color.parseColor("#EDEDED")))
.placeholder(new ColorDrawable(Color.parseColor("#EDEDED")))
.apply(RequestOptions.bitmapTransform(bitmapMultiTransformation))
.into(imageView);
}
return view;
}
}
使用方法
这个就是recycleview的多类型(这个好像还没有实现,用开头第一个比较好)
DynamicAdapter
package com.meetdilse.store.ui.adapter;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import com.meetdilse.store.R;
import com.meetdilse.store.base.BaseNormalAdapter;
import com.meetdilse.store.base.NormalViewHolder;
import com.meetdilse.store.data.DiscoverAlbum;
import com.meetdilse.store.data.Dynamic;
import com.meetdilse.store.glide.CircleCropTransform;
import com.meetdilse.store.glide.RoundedCornersTransform;
import java.security.PublicKey;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
public class DynamicAdapter extends BaseNormalAdapter<Dynamic> {
private List<Dynamic> mData;
private Context mContext;
private final int THREE_IMAGE=0;
private final int TWO_IMAGE=1;
private final int ONE_IMAGE=2;
private final int NO_IMAGE=2;
@Override
public View onCreateItemView(LayoutInflater inflater, ViewGroup parent) {
return inflater.inflate(R.layout.item_mydynamic,parent,false);
}
public DynamicAdapter(Context mContext){
this.mContext=mContext;
mData=new ArrayList<>();
}
public void addAll(List<Dynamic> list) {
mData.addAll(list);
}
@Override
public void onBindViewHolder(@NonNull NormalViewHolder holder, Dynamic datum, int position) {
// if (type==2) {
ImageView avater = holder.findViewById(R.id.iv_dy_avater);
TextView name = holder.findViewById(R.id.tv_dy_name);
TextView dyAge = holder.findViewById(R.id.tv_dy_age);
TextView dyPlace = holder.findViewById(R.id.tv_dy_place);
TextView dyTitle = holder.findViewById(R.id.tv_dy_write);
ImageView dyPhoto = holder.findViewById(R.id.iv_dy);
TextView dyAddTime = holder.findViewById(R.id.tv_time);
Date day = new Date();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String now = df.format(day);
try {
Date now1 = df.parse(now);
long second = datum.getUserInfo().getBirthday();
String dateString = secondToDate(second, "yyyy-MM-dd hh:mm:ss");
Date birthday1 = df.parse(dateString);
int age = now1.getYear() - birthday1.getYear();
dyAge.setText(String.valueOf(age));
long addTime = datum.getAddTime();
String addTimes = secondToDate(addTime, "yyyy-MM-dd hh:mm:ss");
String year = addTimes.substring(0, 4);
String month = addTimes.substring(5, 7);
String day1 = addTimes.substring(8, 10);
dyAddTime.setText(year + "/" + month + "/" + day1);
Log.v("addtime2", addTimes);
} catch (ParseException e) {
e.printStackTrace();
}
name.setText(datum.getUserInfo().getUserNickname());
dyPlace.setText(datum.getCity());
dyTitle.setText(datum.getTitle());
RoundedCornersTransform roundedCornersTransform = new RoundedCornersTransform(6);
RequestOptions requestOptions = RequestOptions.bitmapTransform(roundedCornersTransform);
CircleCropTransform circleCropTransform = new CircleCropTransform();
RequestOptions options = RequestOptions.bitmapTransform(circleCropTransform);
Glide.with(getContext()).load(datum.getUserInfo().getAvatar()).apply(options).into(avater);
Glide.with(getContext()).load(datum.getUserInfo().getAvatarThumb()).apply(requestOptions).into(dyPhoto);
// }
}
// @Override
// public int getItemViewType(int position) {
// List<String> pics = mData.get(position).getPics();
// List<String> pics1 = mData.get(position+1).getPics();
// List<String> pics2 = mData.get(position+2).getPics();
// List<String> pics3 = mData.get(position+3).getPics();
// if(pics==null&&pics1==null&&pics2==null&&pics3==null){
// return NO_IMAGE;
// }
// if(pics!=null&&pics1==null&&pics2==null&&pics3==null){
// return ONE_IMAGE;
// }
// if(pics!=null&&pics1!=null&&pics2==null&&pics3==null){
// return TWO_IMAGE;
// }
// if(pics!=null&&pics1!=null&&pics2!=null&&pics3==null){
// return THREE_IMAGE;
// }
// return super.getItemViewType(position);
// }
/**
* 时间戳转日期
* @param second
* @param patten
* @return
*/
private String secondToDate(long second,String patten) {
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(second * 1000);//转换为毫秒
Date date = calendar.getTime();
SimpleDateFormat format = new SimpleDateFormat(patten);
String dateString = format.format(date);
return dateString;
}
}
使用方法
BaseNormalAdapter(这个是自己写的还是咋样的,不晓得,反正继承于RecyclerView.Adapter)
package com.meetdilse.store.base;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import java.util.ArrayList;
import java.util.List;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
/**
* 2022/01/16 23:49.
*
* RecyclerView适配器
*/
public abstract class BaseNormalAdapter<DATUM> extends RecyclerView.Adapter<NormalViewHolder> {
protected final List<DATUM> mData;
private Context mContext;
public BaseNormalAdapter() {
mData = new ArrayList<>();
}
public abstract View onCreateItemView(LayoutInflater inflater, ViewGroup parent);
public abstract void onBindViewHolder(@NonNull NormalViewHolder holder, DATUM datum, int position);
public Context getContext() {
return mContext;
}
@Override
public int getItemViewType(int position) {
return super.getItemViewType(position);
}
@NonNull
@Override
public final NormalViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
if (mContext == null) {
mContext = parent.getContext();
}
return new NormalViewHolder(onCreateItemView(LayoutInflater.from(parent.getContext()), parent));
}
@Override
public final void onBindViewHolder(@NonNull NormalViewHolder holder, int position) {
onBindViewHolder(holder, mData.get(position), position);
}
@Override
public int getItemCount() {
return mData.size();
}
public List<DATUM> getData() {
return mData;
}
public DATUM getDatum(int position) {
return mData.get(position);
}
public void setData(List<DATUM> data) {
mData.clear();
mData.addAll(data);
notifyDataSetChanged();
}
public void setDatum(int position, DATUM datum) {
mData.set(position, datum);
notifyItemChanged(position);
}
public void removeAll(List<DATUM> data) {
if (data != null && mData.removeAll(data)) {
notifyDataSetChanged();
}
}
public void clear() {
mData.clear();
notifyDataSetChanged();
}
public void addData(List<DATUM> data) {
int positionStart = mData.size();
mData.addAll(data);
notifyItemRangeInserted(positionStart, data.size());
}
public void addData(int position, List<DATUM> data) {
mData.addAll(position, data);
notifyItemRangeInserted(position, getItemCount() - position);
}
public void addDatum(DATUM datum) {
int positionStart = mData.size();
mData.add(datum);
notifyItemRangeInserted(positionStart, 1);
}
public void addDatum(int position, DATUM datum) {
mData.add(position, datum);
notifyItemRangeInserted(position, 1);
if (position < mData.size() - 1) {
int positionStart = position + 1;
int itemCount = getItemCount() - positionStart;
notifyItemRangeChanged(positionStart, itemCount);
}
}
public DATUM remove(int position) {
DATUM remove = mData.remove(position);
notifyItemRemoved(position);
return remove;
}
public void remove(DATUM datum) {
int i = mData.indexOf(datum);
if (i >= 0) {
remove(i);
}
}
}
HomeLiveAdapter(没用到)
package com.meetdilse.store.ui.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import com.bumptech.glide.Glide;
import com.meetdilse.store.R;
import com.meetdilse.store.data.HomeVedio;
import java.util.ArrayList;
import java.util.List;
public class HomeLiveAdapter extends BaseAdapter {
private List<HomeVedio> mData;
private Context mContext;
public HomeLiveAdapter(Context c) {
mContext = c;
mData = new ArrayList<>();
}
public void addAll(List<HomeVedio> list) {
mData.addAll(list);
notifyDataSetChanged();
}
@Override
public int getCount() {
return mData.size();
}
@Override
public HomeVedio getItem(int position) {
// TODO Auto-generated method stub
return mData.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = LayoutInflater.from(mContext).inflate(R.layout.item_mydynamic, parent, false);
HomeVedio dataBean = mData.get(position);
ImageView imageView=view.findViewById(R.id.iv_person_vedio);
Glide.with(mContext).load(dataBean.href).into(imageView);
return view;
}
}
HomeVedioAdapter(没用到)
package com.meetdilse.store.ui.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import com.bumptech.glide.Glide;
import com.meetdilse.store.R;
import com.meetdilse.store.data.HomeVedio;
import java.util.ArrayList;
import java.util.List;
public class HomeVedioAdapter extends BaseAdapter {
private List<HomeVedio> mData;
private Context mContext;
public HomeVedioAdapter(Context c) {//构造函数,给类被调用时,该方法就会被调用
mContext = c;//传context进来,activity的context就是对应的那个界面
mData = new ArrayList<>();//初始化mData,用来保存从activity那边传来的数据的
}
public void addAll(List<HomeVedio> list) {//添加多个数据的方法
mData.addAll(list);//调用方法后就会添加数据到mData
notifyDataSetChanged();//刷新
}
@Override
public int getCount() {
return mData.size();//数据的长度
}
@Override
public HomeVedio getItem(int position) {
// TODO Auto-generated method stub
return mData.get(position);//获取item的数据,从服务器返回数据中通过position获取对应位置的数据
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;//获取item的ID,那就是position了
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {//getview就是进行操作的地方
View view = LayoutInflater.from(mContext).inflate(R.layout.item_dynamic_vedio, parent, false);
HomeVedio dataBean = mData.get(position);
ImageView imageView=view.findViewById(R.id.iv_person_vedio);
Glide.with(mContext).load(dataBean.href).into(imageView);
return view;
}
}
GridView的多行两列
ImageAdpter
package com.meetdilse.store.ui.adapter;
import android.content.Context;
import android.graphics.Color;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import com.meetdilse.store.R;
import com.meetdilse.store.data.MeetImge;
import com.meetdilse.store.glide.CircleCropTransform;
import com.meetdilse.store.glide.RoundedCornersTransform;
import java.util.ArrayList;
import java.util.List;
/**
* @author ..0
* 适配器,继承自BaseAdapter
*/
public class ImageAdpter extends BaseAdapter {
private List<MeetImge> mData;
//定义Context
private Context mContext;
public ImageAdpter(Context c) {//构造函数,给类被调用时,该方法就会被调用
mContext = c;//传context进来,activity的context就是对应的那个界面
mData = new ArrayList<>();//初始化mData,用来保存从activity那边传来的数据的
}
public void add(MeetImge e) {//添加一个数据的方法
mData.add(e);//调用方法后就会添加数据到mData
notifyDataSetChanged();//刷新
}
public void addAll(List<MeetImge> list) {//添加多个数据的方法
mData.addAll(list);//调用方法后就会添加数据到mData
notifyDataSetChanged();//刷新
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mData.size();//数据的长度
}
@Override
public MeetImge getItem(int position) {
// TODO Auto-generated method stub
return mData.get(position);//获取item的数据,从服务器返回数据中通过position获取对应位置的数据
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;//获取item的ID,那就是position了
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {//getview就是进行操作的地方
// TODO Auto-generated method stub
View view = LayoutInflater.from(mContext).inflate(R.layout.item_meet, parent, false);
ImageView imageView = view.findViewById(R.id.iv_bg);
imageView.setImageResource(R.mipmap.ic_launcher);
MeetImge dataBean = mData.get(position);
RoundedCornersTransform roundedCorners = new RoundedCornersTransform(6);
RequestOptions options = RequestOptions.bitmapTransform(roundedCorners);
Glide.with(mContext).load(dataBean.getAvatar()).apply(options).into(imageView);
CircleCropTransform roundedCorners2 = new CircleCropTransform(TypedValue.COMPLEX_UNIT_PX, 1, Color.RED);
RequestOptions options2 = RequestOptions.bitmapTransform(roundedCorners2);
ImageView handimage=view.findViewById(R.id.iv_avatar);
Glide.with(mContext).load(dataBean.getThumb()).apply(options2).into(handimage);
TextView textView = view.findViewById(R.id.tv_status);
textView.setText(dataBean.getUserNickname());
TextView textsite = view.findViewById(R.id.tv_pos);
TextView textstate = view.findViewById(R.id.tv_state);
textsite.setText(dataBean.getCity());
return view;
}
}
使用方法
BaseActivity
/*
* Copyright (C) 2007 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.widget;
import android.annotation.Nullable;
import android.compat.annotation.UnsupportedAppUsage;
import android.database.DataSetObservable;
import android.database.DataSetObserver;
import android.view.View;
import android.view.ViewGroup;
/**
* Common base class of common implementation for an {@link Adapter} that can be
* used in both {@link ListView} (by implementing the specialized
* {@link ListAdapter} interface) and {@link Spinner} (by implementing the
* specialized {@link SpinnerAdapter} interface).
*/
public abstract class BaseAdapter implements ListAdapter, SpinnerAdapter {
@UnsupportedAppUsage
private final DataSetObservable mDataSetObservable = new DataSetObservable();
private CharSequence[] mAutofillOptions;
public boolean hasStableIds() {
return false;
}
public void registerDataSetObserver(DataSetObserver observer) {
mDataSetObservable.registerObserver(observer);
}
public void unregisterDataSetObserver(DataSetObserver observer) {
mDataSetObservable.unregisterObserver(observer);
}
/**
* Notifies the attached observers that the underlying data has been changed
* and any View reflecting the data set should refresh itself.
*/
public void notifyDataSetChanged() {
mDataSetObservable.notifyChanged();
}
/**
* Notifies the attached observers that the underlying data is no longer valid
* or available. Once invoked this adapter is no longer valid and should
* not report further data set changes.
*/
public void notifyDataSetInvalidated() {
mDataSetObservable.notifyInvalidated();
}
public boolean areAllItemsEnabled() {
return true;
}
public boolean isEnabled(int position) {
return true;
}
public View getDropDownView(int position, View convertView, ViewGroup parent) {
return getView(position, convertView, parent);
}
public int getItemViewType(int position) {
return 0;
}
public int getViewTypeCount() {
return 1;
}
public boolean isEmpty() {
return getCount() == 0;
}
@Override
public CharSequence[] getAutofillOptions() {
return mAutofillOptions;
}
/**
* Sets the value returned by {@link #getAutofillOptions()}
*/
public void setAutofillOptions(@Nullable CharSequence... options) {
mAutofillOptions = options;
}
}
这个就是recycleview的单类型
UserInfoMovieAdapter
package com.meetdilse.store.ui.adapter;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.MultiTransformation;
import com.bumptech.glide.request.RequestOptions;
import com.meetdilse.store.R;
import com.meetdilse.store.base.BaseNormalAdapter;
import com.meetdilse.store.base.NormalViewHolder;
import com.meetdilse.store.data.PersonalDetailsMovie;
import com.meetdilse.store.glide.RoundedCornersTransform;
import androidx.annotation.NonNull;
import jp.wasabeef.glide.transformations.BlurTransformation;
public class UserInfoMovieAdapter extends BaseNormalAdapter<PersonalDetailsMovie> {
@Override
public View onCreateItemView(LayoutInflater inflater, ViewGroup parent) {
return inflater.inflate(R.layout.item_dynamic_vedio, parent, false);
}
@Override
public void onBindViewHolder(@NonNull NormalViewHolder holder, PersonalDetailsMovie datum, int position) {
ImageView imageView = holder.findViewById(R.id.iv_person_vedio);
TextView tvCoin=holder.findViewById(R.id.tv_coin);
tvCoin.setText(String.valueOf(datum.getCoin()));
ImageView ivLock = holder.findViewById(R.id.iv_lock);
if (datum.canSee()) {
Glide.with(getContext())
.load(datum.getHref())
.error(new ColorDrawable(Color.parseColor("#EDEDED")))
.placeholder(new ColorDrawable(Color.parseColor("#EDEDED")))
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransform(6)))
.into(imageView);
} else {
MultiTransformation<Bitmap> bitmapMultiTransformation = new MultiTransformation<>(
new BlurTransformation(25, 3),
new RoundedCornersTransform(6)
);
Glide.with(getContext())
.load(datum.getHref())
.error(new ColorDrawable(Color.parseColor("#EDEDED")))
.placeholder(new ColorDrawable(Color.parseColor("#EDEDED")))
.apply(RequestOptions.bitmapTransform(bitmapMultiTransformation))
.into(imageView);
}
//设置价格
tvCoin.setText(String.valueOf(datum.getCoin()));
tvCoin.setVisibility(datum.getCoin() > 0 ? View.VISIBLE : View.INVISIBLE);
//是否是否可见
ivLock.setVisibility(datum.canSee()?View.INVISIBLE:View.VISIBLE);
}
}
这个就是recycleview的单类型
UserInfoPhotoAdapter
package com.meetdilse.store.ui.adapter;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.MultiTransformation;
import com.bumptech.glide.request.RequestOptions;
import com.meetdilse.store.R;
import com.meetdilse.store.base.BaseNormalAdapter;
import com.meetdilse.store.base.NormalViewHolder;
import com.meetdilse.store.data.PersonalDetailsPhoto;
import com.meetdilse.store.glide.RoundedCornersTransform;
import androidx.annotation.NonNull;
import jp.wasabeef.glide.transformations.BlurTransformation;
public class UserInfoPhotoAdapter extends BaseNormalAdapter<PersonalDetailsPhoto> {
@Override
public int getItemViewType(int position) {
return super.getItemViewType(position);
}
@Override
public View onCreateItemView(LayoutInflater inflater, ViewGroup parent) {
return inflater.inflate(R.layout.item_dynamic_photo, parent, false);
}
@Override
public void onBindViewHolder(@NonNull NormalViewHolder holder, PersonalDetailsPhoto datum, int position) {
ImageView imageView = holder.findViewById(R.id.iv_person_photo);
TextView tvCoin=holder.findViewById(R.id.tv_coin);
tvCoin.setText(String.valueOf(datum.getCoin()));
ImageView ivLock = holder.findViewById(R.id.iv_lock);
if (datum.canSee()) {
Glide.with(getContext())
.load(datum.getThumb())
.error(new ColorDrawable(Color.parseColor("#EDEDED")))
.placeholder(new ColorDrawable(Color.parseColor("#EDEDED")))
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransform(6)))
.into(imageView);
} else {
MultiTransformation<Bitmap> bitmapMultiTransformation = new MultiTransformation<>(
new BlurTransformation(25, 3),
new RoundedCornersTransform(6)
);
Glide.with(getContext())
.load(datum.getThumb())
.error(new ColorDrawable(Color.parseColor("#EDEDED")))
.placeholder(new ColorDrawable(Color.parseColor("#EDEDED")))
.apply(RequestOptions.bitmapTransform(bitmapMultiTransformation))
.into(imageView);
}
//设置价格
tvCoin.setText(String.valueOf(datum.getCoin()));
tvCoin.setVisibility(datum.getCoin() > 0 ? View.VISIBLE : View.INVISIBLE);
//是否是否可见
ivLock.setVisibility(datum.canSee()?View.INVISIBLE:View.VISIBLE);
}
}
使用方法