## 以下实现的就是就是这样的效果,使用XRecyclerView和OKHttp实现的功能 ##
/**
* 类描述:适配器
*/
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private List<DataBeans.DataBean> list;
private Context context;
private View view;
private MyRecyclerViewInterface listener;
public void setListener(MyRecyclerViewInterface listener) {
this.listener = listener;
}
public MyAdapter(List<DataBeans.DataBean> list, Context context) {
this.list = list;
this.context = context;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
view = View.inflate(context, R.layout.item, null);
ViewHolder holder = new ViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(ViewHolder holder, final int position) {
Glide.with(context).load(list.get(position).getUserImg()).into(holder.userImg);
holder.userName.setText(list.get(position).getUserName());
holder.userAge.setText(list.get(position).getUserAge() + "岁");
holder.userOccupation.setText(list.get(position).getOccupation());
holder.userIntroduction.setText(list.get(position).getIntroduction());
holder.userName.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
context.startActivity(new Intent(context, ExceptionActivity.class));
}
});
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
listener.onItemClick(v, position);
}
});
}
@Override
public int getItemCount() {
return list.size();
}
class ViewHolder extends RecyclerView.ViewHolder {
private ImageView userImg;
private TextView userName, userAge, userOccupation, userIntroduction;
public ViewHolder(View itemView) {
super(itemView);
userImg = (ImageView) itemView.findViewById(R.id.userImg);
userName = (TextView) itemView.findViewById(R.id.userName);
userAge = (TextView) itemView.findViewById(R.id.userAge);
userOccupation = (TextView) itemView.findViewById(R.id.userOccupation);
userIntroduction = (TextView) itemView.findViewById(R.id.userIntroduction);
}
}
}
/**
* 保存错误信息到文件中
*
* @param ex
* @return 返回文件名称, 便于将文件传送到服务器
*/
private String saveCrashInfo2File(Throwable ex) {
StringBuffer sb = new StringBuffer();
for (Map.Entry<String, String> entry : infos.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
sb.append(key + "=" + value + "\n");
}
Writer writer = new StringWriter();
PrintWriter printWriter = new PrintWriter(writer);
ex.printStackTrace(printWriter);
Throwable cause = ex.getCause();
while (cause != null) {
cause.printStackTrace(printWriter);
cause = cause.getCause();
}
printWriter.close();
String result = writer.toString();
sb.append(result);
try {
long timestamp = System.currentTimeMillis();
String time = formatter.format(new Date());
String fileName = "crash-" + time + "-" + timestamp + ".log";
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
String path = "/sdcard/crash/";
File dir = new File(path);
if (!dir.exists()) {
dir.mkdirs();
}
FileOutputStream fos = new FileOutputStream(path + fileName);
fos.write(sb.toString().getBytes());
fos.close();
}
return fileName;
} catch (Exception e) {
Log.e(TAG, "an error occured while writing file...", e);
}
return null;
}