package com.tejia.lijin.app.ui.mine;
|
|
import android.content.Context;
|
import androidx.recyclerview.widget.GridLayoutManager;
|
import androidx.recyclerview.widget.RecyclerView;
|
import android.view.LayoutInflater;
|
import android.view.View;
|
import android.view.ViewGroup;
|
import android.widget.ImageView;
|
import android.widget.TextView;
|
import android.widget.Toast;
|
|
import com.bumptech.glide.Glide;
|
import com.tejia.lijin.app.R;
|
import com.tejia.lijin.app.entity.hongbao.HongBaoSendRecord;
|
import com.tejia.lijin.app.util.GlideCircleTransform;
|
import com.tejia.lijin.app.util.clipboard.ClipboardUtil;
|
|
import java.util.List;
|
|
public class HongBaoSendRecordAdapter extends RecyclerView.Adapter {
|
private RecyclerView mRecyclerView;
|
|
private List<HongBaoSendRecord> mList;
|
private Context mContext;
|
|
private View VIEW_FOOTER;
|
private View VIEW_HEADER;
|
|
//Type
|
private int TYPE_NORMAL = 1000;
|
private int TYPE_HEADER = 1001;
|
private int TYPE_FOOTER = 1002;
|
|
|
public HongBaoSendRecordAdapter(Context context, List<HongBaoSendRecord> list) {
|
this.mList = list;
|
this.mContext = context;
|
}
|
|
@Override
|
public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
if (viewType == TYPE_FOOTER) {
|
return new MyHolder(VIEW_FOOTER);
|
} else if (viewType == TYPE_HEADER) {
|
return new MyHolder(VIEW_HEADER);
|
} else {
|
View view = LayoutInflater.from(mContext).inflate(R.layout.item_hongbao_send_history, parent, false);
|
MyHolder holder = new MyHolder(view);
|
return holder;
|
}
|
}
|
|
@Override
|
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
|
final MyHolder viewHolder = (MyHolder) holder;
|
if (!isHeaderView(position) && !isFooterView(position)) {
|
HongBaoSendRecord info;
|
if (haveHeaderView()) {
|
if (haveFooterView() && position == mList.size() + 1) {
|
return;
|
}
|
info = mList.get(position - 1);
|
} else if (haveFooterView() && position == mList.size()) {
|
return;
|
} else {
|
info = mList.get(position);
|
}
|
|
viewHolder.tv_content.setText(info.getDesc());
|
viewHolder.tv_send_time.setText("创建时间:" + info.getGiveTime());
|
viewHolder.tv_recieve_time.setText(info.getReceiveTime());
|
if (info.getState() == 0) {
|
viewHolder.ll_recieved.setVisibility(View.GONE);
|
viewHolder.ll_unrecieve.setVisibility(View.VISIBLE);
|
viewHolder.tv_state.setText("待领取");
|
viewHolder.tv_copy.setTag(info.getDesc());
|
viewHolder.tv_copy.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
ClipboardUtil.copy(viewHolder.tv_copy.getContext(), viewHolder.tv_copy.getTag() + "");
|
Toast.makeText(mContext, "复制成功", Toast.LENGTH_SHORT).show();
|
}
|
});
|
} else if (info.getState() == 1) {
|
viewHolder.ll_recieved.setVisibility(View.VISIBLE);
|
viewHolder.ll_unrecieve.setVisibility(View.GONE);
|
viewHolder.tv_user_id.setText("ID:" + info.getReceiveUid());
|
viewHolder.tv_user_nickname.setText(info.getReceiveName());
|
viewHolder.tv_recieve_time.setText(info.getReceiveTime());
|
Glide.with(viewHolder.iv_user_portrait.getContext())
|
.load(info.getReceivePortrait())
|
.transform(new GlideCircleTransform(viewHolder.iv_user_portrait.getContext()))
|
.into(viewHolder.iv_user_portrait);
|
viewHolder.tv_state.setText("已领取");
|
} else if (info.getState() == 2) {
|
viewHolder.ll_recieved.setVisibility(View.GONE);
|
viewHolder.ll_unrecieve.setVisibility(View.GONE);
|
viewHolder.tv_state.setText("已退回");
|
}
|
}
|
}
|
|
@Override
|
public int getItemCount() {
|
int count = (mList == null ? 0 : mList.size());
|
if (VIEW_FOOTER != null) {
|
count++;
|
}
|
|
if (VIEW_HEADER != null) {
|
count++;
|
}
|
return count;
|
}
|
|
@Override
|
public int getItemViewType(int position) {
|
if (isHeaderView(position)) {
|
return TYPE_HEADER;
|
} else if (isFooterView(position)) {
|
return TYPE_FOOTER;
|
} else {
|
return TYPE_NORMAL;
|
}
|
}
|
|
@Override
|
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
|
try {
|
if (mRecyclerView == null && mRecyclerView != recyclerView) {
|
mRecyclerView = recyclerView;
|
}
|
ifGridLayoutManager();
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
private View getLayout(int layoutId) {
|
return LayoutInflater.from(mContext).inflate(layoutId, null);
|
}
|
|
public void addHeaderView(View headerView) {
|
if (haveHeaderView()) {
|
throw new IllegalStateException("hearview has already exists!");
|
} else {
|
//避免出现宽度自适应
|
ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
headerView.setLayoutParams(params);
|
VIEW_HEADER = headerView;
|
ifGridLayoutManager();
|
notifyItemInserted(0);
|
}
|
|
}
|
|
public void addFooterView(View footerView) {
|
if (haveFooterView()) {
|
throw new IllegalStateException("footerView has already exists!");
|
} else {
|
ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
footerView.setLayoutParams(params);
|
VIEW_FOOTER = footerView;
|
ifGridLayoutManager();
|
notifyItemInserted(getItemCount() - 1);
|
}
|
}
|
|
private void ifGridLayoutManager() {
|
if (mRecyclerView == null) return;
|
final RecyclerView.LayoutManager layoutManager = mRecyclerView.getLayoutManager();
|
if (layoutManager instanceof GridLayoutManager) {
|
((GridLayoutManager) layoutManager).setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
|
@Override
|
public int getSpanSize(int position) {
|
if (isHeaderView(position) || isFooterView(position)) {
|
return ((GridLayoutManager) layoutManager).getSpanCount();
|
} else {
|
return 1;
|
}
|
}
|
});
|
}
|
}
|
|
private boolean haveHeaderView() {
|
return VIEW_HEADER != null;
|
}
|
|
public boolean haveFooterView() {
|
return VIEW_FOOTER != null;
|
}
|
|
private boolean isHeaderView(int position) {
|
return haveHeaderView() && position == 0;
|
}
|
|
private boolean isFooterView(int position) {
|
return haveFooterView() && position >= getItemCount() - 1;
|
}
|
|
|
public class MyHolder extends RecyclerView.ViewHolder {
|
TextView tv_send_time;
|
TextView tv_state;
|
TextView tv_content;
|
TextView tv_copy;
|
|
ImageView iv_user_portrait;
|
TextView tv_user_nickname;
|
TextView tv_user_id;
|
TextView tv_recieve_time;
|
|
View ll_unrecieve;
|
View ll_recieved;
|
|
|
public MyHolder(View convertView) {
|
super(convertView);
|
tv_send_time = convertView
|
.findViewById(R.id.tv_send_time);
|
tv_state = convertView
|
.findViewById(R.id.tv_state);
|
tv_content = convertView
|
.findViewById(R.id.tv_content);
|
tv_copy = convertView
|
.findViewById(R.id.tv_copy);
|
iv_user_portrait = convertView
|
.findViewById(R.id.iv_user_portrait);
|
tv_user_nickname = convertView
|
.findViewById(R.id.tv_user_nickname);
|
tv_user_id = convertView
|
.findViewById(R.id.tv_user_id);
|
tv_recieve_time = convertView
|
.findViewById(R.id.tv_recieve_time);
|
ll_unrecieve = convertView
|
.findViewById(R.id.ll_unrecieve);
|
ll_recieved = convertView
|
.findViewById(R.id.ll_recieved);
|
}
|
}
|
}
|