package com.lzy.ninegridview.model.evaluation; import android.content.Context; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; import android.view.inputmethod.InputMethodManager; import android.widget.BaseAdapter; import android.widget.EditText; import android.widget.ImageView; import android.widget.ListView; import android.widget.PopupWindow; import android.widget.RatingBar; import android.widget.TextView; import android.widget.Toast; import com.bumptech.glide.Glide; import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.lzy.ninegridview.R; import com.lzy.ninegridview.model.evaluation.bean.EvaluationItem; import com.lzy.ninegridview.model.evaluation.bean.EvaluationPic; import com.lzy.ninegridview.utils.GlobalDialog; import com.lzy.ninegrid.ImageInfo; import com.lzy.ninegrid.NineGridView; import com.lzy.ninegrid.preview.NineGridViewClickAdapter; import com.lzy.widget.CircleImageView; import java.util.ArrayList; import java.util.List; import butterknife.Bind; import butterknife.ButterKnife; import butterknife.OnClick; /** * ================================================ * 作 者:廖子尧 * 版 本:1.0 * 创建日期:2016/3/22 * 描 述:评价页的Adapter * 修订历史: * ================================================ */ public class EvaluationAdapter extends BaseAdapter { private Context context; private List<EvaluationItem> data; private LayoutInflater mInflater; public void setData(List<EvaluationItem> data) { this.data = data; notifyDataSetChanged(); } public EvaluationAdapter(Context context, List<EvaluationItem> data) { this.context = context; this.data = data; mInflater = LayoutInflater.from(context); } @Override public int getCount() { return data.size(); } @Override public EvaluationItem getItem(int position) { return data.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = mInflater.inflate(R.layout.item_evaluate, parent, false); convertView.setTag(new ViewHolder(convertView)); } ViewHolder holder = (ViewHolder) convertView.getTag(); EvaluationItem item = getItem(position); holder.content.setText(item.getContent()); holder.username.setText(item.getUserName()); holder.createTime.setText(item.getCreatTime()); holder.grade.setRating(item.grade); setImage(context, holder.avatar, item.avatar == null ? null : item.avatar.smallPicUrl); ArrayList<ImageInfo> imageInfo = new ArrayList<>(); List<EvaluationPic> imageDetails = item.getAttachments(); if (imageDetails != null) { for (EvaluationPic imageDetail : imageDetails) { ImageInfo info = new ImageInfo(); info.setThumbnailUrl(imageDetail.smallImageUrl); info.setBigImageUrl(imageDetail.imageUrl); imageInfo.add(info); } } holder.nineGrid.setAdapter(new NineGridViewClickAdapter(context, imageInfo)); if (item.evaluatereplys == null) { holder.comments.setVisibility(View.GONE); } else { holder.comments.setVisibility(View.VISIBLE); holder.comments.setAdapter(new CommentsAdapter(context, item.getEvaluatereplys())); } return convertView; } private void setImage(Context context, ImageView imageView, String url) { Glide.with(context).load(url)// .placeholder(R.drawable.ic_default_color)// .error(R.drawable.ic_default_color)// .diskCacheStrategy(DiskCacheStrategy.ALL)// .into(imageView); } class ViewHolder implements View.OnClickListener { @Bind(R.id.tv_content) TextView content; @Bind(R.id.nineGrid) NineGridView nineGrid; @Bind(R.id.tv_username) TextView username; @Bind(R.id.tv_createTime) TextView createTime; @Bind(R.id.rb_grade) RatingBar grade; @Bind(R.id.avatar) CircleImageView avatar; @Bind(R.id.lv_comments) ListView comments; private PopupWindow window; private PopupWindow editWindow; private View rootView; public ViewHolder(View convertView) { rootView = convertView; ButterKnife.bind(this, convertView); } @OnClick(R.id.more) public void more(View view) { View popupView = mInflater.inflate(R.layout.popup_reply, null); popupView.findViewById(R.id.favour).setOnClickListener(this); popupView.findViewById(R.id.comment).setOnClickListener(this); window = new PopupWindow(popupView, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); window.setOutsideTouchable(true); window.setFocusable(true); window.setAnimationStyle(R.style.popup_more_anim); window.setBackgroundDrawable(new ColorDrawable(Color.BLACK)); popupView.measure(0, 0); int xoff = -popupView.getMeasuredWidth(); int yoff = -(popupView.getMeasuredHeight() + view.getHeight()) / 2; window.showAsDropDown(view, xoff, yoff); } @OnClick(R.id.delete) public void delete(View view) { final GlobalDialog delDialog = new GlobalDialog(context); delDialog.setCanceledOnTouchOutside(true); delDialog.getTitle().setText("提示"); delDialog.getContent().setText("确定删除吗?"); delDialog.setLeftBtnText("取消"); delDialog.setRightBtnText("确定"); delDialog.setLeftOnclick(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(context, "取消", Toast.LENGTH_SHORT).show(); delDialog.dismiss(); } }); delDialog.setRightOnclick(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(context, "确定", Toast.LENGTH_SHORT).show(); delDialog.dismiss(); } }); delDialog.show(); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.favour: Toast.makeText(context, "赞+1", Toast.LENGTH_SHORT).show(); if (window != null) window.dismiss(); break; case R.id.comment: View editView = mInflater.inflate(R.layout.replay_input, null); editWindow = new PopupWindow(editView, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); editWindow.setOutsideTouchable(true); editWindow.setFocusable(true); editWindow.setBackgroundDrawable(new ColorDrawable(Color.WHITE)); EditText replyEdit = (EditText) editView.findViewById(R.id.reply); replyEdit.setFocusable(true); replyEdit.requestFocus(); // 以下两句不能颠倒 editWindow.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED); editWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); editWindow.showAtLocation(rootView, Gravity.BOTTOM, 0, 0); // 显示键盘 final InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS); editWindow.setOnDismissListener(new PopupWindow.OnDismissListener() { @Override public void onDismiss() { if (imm.isActive()) imm.toggleSoftInput(0, InputMethodManager.RESULT_SHOWN); } }); if (window != null) window.dismiss(); break; } } } }