package com.tejia.lijin.app.ui.mine;
|
|
import android.content.Context;
|
import android.database.sqlite.SQLiteDatabase;
|
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.wpc.library.util.common.StringUtils;
|
import com.nostra13.universalimageloader.core.DisplayImageOptions;
|
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
|
import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;
|
import com.tejia.lijin.app.BasicTextHttpResponseHandler;
|
import com.tejia.lijin.app.R;
|
import com.tejia.lijin.app.ShoppingApi;
|
import com.tejia.lijin.app.entity.CustomService;
|
import com.tejia.lijin.app.sqlite.CustomServiceSQLiteOpenHelper;
|
import com.tejia.lijin.app.util.GlideCircleTransform;
|
import com.tejia.lijin.app.util.TimeUtils;
|
import com.tejia.lijin.app.util.clipboard.ClipboardUtil;
|
import com.tejia.lijin.app.util.umengCustomEvent.UserCustomEvent;
|
|
import org.apache.http.Header;
|
import org.json.JSONException;
|
import org.json.JSONObject;
|
|
import java.util.List;
|
|
/**
|
* Created by weikou2015 on 2017/12/5.
|
*/
|
|
public class CustomServiceAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
private RecyclerView mRecyclerView;
|
|
private List<CustomService> mList;
|
private Context mContext;
|
|
private View VIEW_FOOTER;
|
private View VIEW_HEADER;
|
|
//Type
|
private int TYPE_LOCAL = 1003;
|
private int TYPE_ANSWER_TEXT = 1004;
|
private int TYPE_ANSWER_KEFU = 1005;
|
private int TYPE_HEADER = 1001;
|
private int TYPE_FOOTER = 1002;
|
|
private DisplayImageOptions options;
|
SQLiteDatabase db;
|
RecyclerView rv;
|
|
public CustomServiceAdapter(Context context, List<CustomService> list, RecyclerView rv) {
|
this.mList = list;
|
this.mContext = context;
|
this.rv = rv;
|
this.options = new DisplayImageOptions.Builder()
|
.showImageForEmptyUri(R.drawable.ic_goods_default)
|
.showImageOnFail(R.drawable.ic_goods_default)
|
.showImageOnLoading(R.drawable.ic_goods_default)
|
.resetViewBeforeLoading(true).cacheInMemory(true)
|
.cacheOnDisk(true).imageScaleType(ImageScaleType.EXACTLY)
|
.considerExifParams(true)
|
.displayer(new FadeInBitmapDisplayer(300)).build();
|
CustomServiceSQLiteOpenHelper openHelper = new CustomServiceSQLiteOpenHelper(mContext);
|
db = openHelper.getWritableDatabase();
|
}
|
|
@Override
|
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
if (viewType == TYPE_FOOTER) {
|
return new MyHolder1(VIEW_FOOTER);
|
} else if (viewType == TYPE_HEADER) {
|
return new MyHolder1(VIEW_HEADER);
|
} else if (viewType == TYPE_LOCAL) {
|
View view = LayoutInflater.from(mContext).inflate(R.layout.item_custom_service_local, null);
|
MyHolder1 holder = new MyHolder1(view);
|
return holder;
|
} else if (viewType == TYPE_ANSWER_KEFU) {
|
View view = LayoutInflater.from(mContext).inflate(R.layout.item_custom_service_answer_kefu, null);
|
MyHolder3 holder = new MyHolder3(view);
|
return holder;
|
} else {
|
View view = LayoutInflater.from(mContext).inflate(R.layout.item_custom_service_answer_text, null);
|
MyHolder2 holder = new MyHolder2(view);
|
return holder;
|
}
|
}
|
|
@Override
|
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
|
if (!isHeaderView(position) && !isFooterView(position)) {
|
final CustomService info;
|
info = mList.get(position);
|
String portraitLocal = mContext.getSharedPreferences("user", Context.MODE_PRIVATE).getString("portrait", "");
|
if (info.getStemFrom() == 0) {
|
MyHolder1 mHolder = (MyHolder1) holder;
|
if (position > 0 && info.getCreateTime() - mList.get(position - 1).getCreateTime() > 120000) {
|
mHolder.tv_key_time.setVisibility(View.VISIBLE);
|
} else {
|
mHolder.tv_key_time.setVisibility(View.GONE);
|
}
|
|
mHolder.tv_key_time.setText(TimeUtils.millisToLifeString(info.getCreateTime()));
|
Glide.with(mContext).load(portraitLocal).error(R.drawable.ic_default_portrait_light)
|
.placeholder(R.drawable.ic_default_portrait_light)
|
.transform(new GlideCircleTransform(mContext)).into(mHolder.iv_portrait_local);
|
mHolder.tv_msg_local.setText(info.getKey());
|
} else if (info.getStemFrom() == 1 && info.getContentType().equals("kefu")) {
|
MyHolder3 mHolder = (MyHolder3) holder;
|
Glide.with(mContext).load(R.mipmap.ic_system_portratit).error(R.drawable.ic_default_portrait_light)
|
.placeholder(R.drawable.ic_default_portrait_light)
|
.transform(new GlideCircleTransform(mContext)).into(mHolder.iv_portrait_answer);
|
mHolder.tv_answer_key.setText(info.getKey());
|
if (StringUtils.isEmpty(info.getKey())) {
|
mHolder.tv_answer_key.setVisibility(View.GONE);
|
} else {
|
mHolder.tv_answer_key.setVisibility(View.VISIBLE);
|
}
|
String content = info.getContent();
|
JSONObject object = null;
|
try {
|
object = new JSONObject(content);
|
} catch (JSONException e) {
|
|
}
|
final String qqNum = object.optString("qq");
|
final String wxNum = object.optString("wx");
|
// final String wxMinPath = object.optJSONObject("xcx").optString("path");
|
// final String wxMinGhid = object.optJSONObject("xcx").optString("ghid");
|
final String desc = object.optString("desc");
|
mHolder.tv_qq_num.setText(" " + qqNum);
|
mHolder.tv_wchat_num.setText(" " + wxNum);
|
if (!StringUtils.isEmpty(desc)) {
|
mHolder.tv_service_time.setText(desc);
|
mHolder.tv_service_time.setVisibility(View.VISIBLE);
|
} else {
|
mHolder.tv_service_time.setVisibility(View.GONE);
|
}
|
|
mHolder.tv_qq_copy.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
UserCustomEvent.userKefuPersonCopy(mContext,"QQ");
|
ClipboardUtil.copy(mContext,qqNum);
|
// SingleToast.showToast(mContext, "复制QQ号成功");
|
Toast.makeText(mContext, "复制QQ号成功", Toast.LENGTH_SHORT).show();
|
}
|
});
|
mHolder.tv_wchat_copy.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
UserCustomEvent.userKefuPersonCopy(mContext,"微信");
|
ClipboardUtil.copy(mContext,wxNum);
|
// SingleToast.showToast(mContext, "复制微信号成功");
|
Toast.makeText(mContext, "复制微信号成功", Toast.LENGTH_SHORT).show();
|
}
|
});
|
|
} else {
|
MyHolder2 mHolder = (MyHolder2) holder;
|
|
Glide.with(mContext).load(R.mipmap.ic_system_portratit).error(R.drawable.ic_default_portrait_light)
|
.placeholder(R.drawable.ic_default_portrait_light)
|
.transform(new GlideCircleTransform(mContext)).into(mHolder.iv_portrait_answer);
|
mHolder.tv_answer_key.setText(info.getKey());
|
if (StringUtils.isEmpty(info.getKey())) {
|
mHolder.tv_answer_key.setVisibility(View.GONE);
|
} else {
|
mHolder.tv_answer_key.setVisibility(View.VISIBLE);
|
}
|
mHolder.tv_answer_content.setText(info.getContent());
|
mHolder.tv_manpower.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
UserCustomEvent.userKefuResultAction(mContext, "人工客服");
|
keyStorage("人工客服");
|
getAnswer("人工客服");
|
}
|
});
|
mHolder.tv_solved.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
// SingleToast.showToast(mContext, "很高兴为你服务,有问题可以继续问我哟~");
|
UserCustomEvent.userKefuResultAction(mContext, "已解决");
|
Toast.makeText(mContext, "很高兴为你服务,有问题可以继续问我哟~", Toast.LENGTH_SHORT).show();
|
}
|
});
|
}
|
|
}
|
}
|
|
private void getAnswer(String key) {
|
ShoppingApi.getAnswer(mContext, key, new BasicTextHttpResponseHandler() {
|
@Override
|
public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
|
if (jsonObject.optInt("code") == 0) {
|
answerStorage(jsonObject.optJSONObject("data").getString("key"), jsonObject.optJSONObject("data").getString("content"),
|
jsonObject.optJSONObject("data").getString("contentType"), "1");
|
CustomService info = new CustomService();
|
info.setStemFrom(1);
|
info.setKey(jsonObject.optJSONObject("data").getString("key"));
|
info.setContent(jsonObject.optJSONObject("data").getString("content"));
|
info.setContentType(jsonObject.optJSONObject("data").getString("contentType"));
|
info.setStatus("1");
|
info.setCreateTime(System.currentTimeMillis());
|
mList.add(info);
|
notifyDataSetChanged();
|
rv.getLayoutManager().scrollToPosition(mList.size());
|
}
|
}
|
});
|
}
|
|
/**
|
* 搜索关键字存储
|
*
|
* @param mkey
|
*/
|
private void keyStorage(String mkey) {
|
long cTime = System.currentTimeMillis();
|
db.execSQL("insert into custom_service(stemfrom,`key`,createtime) values(?,?,?)", new String[]{"0", mkey, cTime + ""});
|
CustomService info = new CustomService();
|
info.setStemFrom(0);
|
info.setKey(mkey);
|
info.setCreateTime(cTime);
|
mList.add(info);
|
notifyDataSetChanged();
|
rv.getLayoutManager().scrollToPosition(mList.size() - 1);
|
}
|
|
/**
|
* 服务器应答数据存储
|
*
|
* @param mkey
|
*/
|
private void answerStorage(String mkey, String content, String contentType, String status) {
|
db.execSQL("insert into custom_service(stemfrom,`key`,content,contenttype,status,createtime) values(?,?,?,?,?,?)",
|
new String[]{"1", mkey, content, contentType, status, System.currentTimeMillis() + ""});
|
}
|
|
@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 if (mList.get(position).getStemFrom() == 0) {
|
return TYPE_LOCAL;
|
} else if (mList.get(position).getStemFrom() == 1 && mList.get(position).getContentType().equals("text")) {
|
return TYPE_ANSWER_TEXT;
|
} else {
|
return TYPE_ANSWER_KEFU;
|
}
|
}
|
|
@Override
|
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
|
try {
|
if (mRecyclerView == null && mRecyclerView != recyclerView) {
|
mRecyclerView = recyclerView;
|
}
|
ifGridLayoutManager();
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
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 MyHolder1 extends RecyclerView.ViewHolder {
|
private TextView tv_key_time;
|
private TextView tv_msg_local;
|
private ImageView iv_portrait_local;
|
|
|
public MyHolder1(View convertView) {
|
super(convertView);
|
tv_key_time = convertView.findViewById(R.id.tv_key_time);
|
tv_msg_local = convertView.findViewById(R.id.tv_msg_local);
|
iv_portrait_local = convertView.findViewById(R.id.iv_portrait_local);
|
}
|
}
|
|
public class MyHolder2 extends RecyclerView.ViewHolder {
|
private ImageView iv_portrait_answer;
|
private TextView tv_answer_key;
|
private TextView tv_answer_content;
|
private TextView tv_manpower;
|
private TextView tv_solved;
|
|
public MyHolder2(View convertView) {
|
super(convertView);
|
iv_portrait_answer = convertView.findViewById(R.id.iv_portrait_answer);
|
tv_answer_key = convertView.findViewById(R.id.tv_answer_key);
|
tv_answer_content = convertView.findViewById(R.id.tv_answer_content);
|
tv_manpower = convertView.findViewById(R.id.tv_manpower);
|
tv_solved = convertView.findViewById(R.id.tv_solved);
|
|
}
|
}
|
|
public class MyHolder3 extends RecyclerView.ViewHolder {
|
private ImageView iv_portrait_answer;
|
private TextView tv_answer_key;
|
private TextView tv_qq_num;
|
private TextView tv_qq_copy;
|
private TextView tv_wchat_num;
|
private TextView tv_wchat_copy;
|
private TextView tv_service_time;
|
// private TextView tv_xcx_input;
|
|
|
public MyHolder3(View convertView) {
|
super(convertView);
|
iv_portrait_answer = convertView.findViewById(R.id.iv_portrait_answer);
|
tv_answer_key = convertView.findViewById(R.id.tv_answer_key);
|
tv_qq_copy = convertView.findViewById(R.id.tv_qq_copy);
|
tv_qq_num = convertView.findViewById(R.id.tv_qq_num);
|
tv_wchat_num = convertView.findViewById(R.id.tv_wchat_num);
|
tv_wchat_copy = convertView.findViewById(R.id.tv_wchat_copy);
|
tv_service_time = convertView.findViewById(R.id.tv_service_time);
|
// tv_xcx_input = convertView.findViewById(R.id.tv_xcx_input);
|
}
|
}
|
}
|