zoukankan      html  css  js  c++  java
  • recyclerview的使用

    首先初始化

    private RecyclerView recycler_view;
    private MyAdapter mAdapter;//适配器
    recycler_view = (RecyclerView) findViewById(R.id.recycler_view);
            //设置布局管理器
            LinearLayoutManager mLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
            recycler_view.setLayoutManager(mLayoutManager);
         mAdapter = new MyAdapter(myFeedback);
         recycler_view.setAdapter(mAdapter);

      这是要实现的布局

    布局

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#ffffff">
    
        <include
            android:id="@+id/include"
            layout="@layout/title" />
    
        <com.scwang.smartrefresh.layout.SmartRefreshLayout
            android:id="@+id/srl_layout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_below="@id/include"
            app:srlEnableAutoLoadMore="false">
    
            <com.scwang.smartrefresh.layout.header.ClassicsHeader
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:srlTextRelease="@string/Refresh" />
            <android.support.v7.widget.RecyclerView
                android:id="@+id/recycler_view"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_below="@id/include"
                android:fadeScrollbars="false"
                android:nestedScrollingEnabled="false"
                android:scrollbars="none"
                android:visibility="visible" />
    
            <com.scwang.smartrefresh.layout.footer.ClassicsFooter
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:srlTextPulling="@string/up"
                app:srlTextRelease="@string/Release" />
        </com.scwang.smartrefresh.layout.SmartRefreshLayout>
    
    
        <ImageView
            android:id="@+id/iv_add"
            android:layout_width="52dp"
            android:layout_height="52dp"
            android:layout_alignParentRight="true"
            android:layout_alignParentBottom="true"
            android:layout_marginRight="27dp"
            android:layout_marginBottom="16dp"
            android:src="@mipmap/add" />
    </RelativeLayout>
    

      recyclerview适配器

    public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
        private List<MyFeedbackModel> mydata;
    
    //提供点击事件接口
        public interface OnItemClickLitener {
            void onItemClick(View view, int position);
    
            void onItemLongClick(View view, int position);
        }
    
        private OnItemClickLitener mOnItemClickLitener;
    
        public void setOnItemClickLitener(OnItemClickLitener mOnItemClickLitener) {
            this.mOnItemClickLitener = mOnItemClickLitener;
        }
    
        public MyAdapter(List<MyFeedbackModel> myFeedback) {
            this.mydata = myFeedback;
        }
    
    
        @Override
        public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            // 实例化展示的view
            View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item, parent, false);
            // 实例化viewholder
            ViewHolder viewHolder = new ViewHolder(v);
            return viewHolder;
        }
    
        @Override
        public void onBindViewHolder(final ViewHolder holder, int position) {
            // 绑定数据
            MyFeedbackModel myFeedbackModel = mydata.get(position);
            holder.tv_date.setText(getUserDate(myFeedbackModel.getFeedbackTime()));
            holder.tv_reply.setText(myFeedbackModel.getRead());
            holder.tv_who.setText(myFeedbackModel.getSource());
            holder.tv_text.setText(myFeedbackModel.getContent());
            if (myFeedbackModel.getState() == 1){
                holder.tv_solve.setVisibility(View.VISIBLE);
    
            }else {
                holder.tv_solve.setVisibility(View.GONE);
            }
            if (myFeedbackModel.getMessage().equals("null")) {
                holder.rl_new.setVisibility(View.GONE);
                holder.tv_text2.setVisibility(View.VISIBLE);
                //用户无回复
                holder.tv_text2.setTextColor(0xffbebebe);
                holder.tv_text2.setPadding(14, 6, 14, 6);
    //                holder.tv_text2.setBackgroundResource(R.drawable.read);
                holder.tv_text2.setText("暂无回复");
            } else {
                holder.rl_new.setVisibility(View.VISIBLE);
                holder.tv_text2.setVisibility(View.GONE);
                if (myFeedbackModel.getCreateTime().equals("null")) {
                    holder.tv_date1.setText("0");
                } else {
                    holder.tv_date1.setText(getUserDate(Long.parseLong(myFeedbackModel.getCreateTime())));
                }
                //0:用户 1:平台
                if (myFeedbackModel.getSource().equals("0")) {
                    holder.tv_who1.setText("我:");
                    holder.tv_who1.setTextColor(0xff333333);
                    //用户
                    String[] strArray = myFeedbackModel.getMessage().split("\.");
                    int suffixIndex = strArray.length - 1;
    //            System.out.println(strArray[suffixIndex]);
                    if (strArray[suffixIndex].equals("png") || strArray[suffixIndex].equals("jpg")) {
                        holder.tv_text1.setText("[图片]");
                        holder.tv_text1.setTextColor(0xff333333);
                    } else {
                        holder.tv_text1.setText(myFeedbackModel.getMessage());
                        holder.tv_text1.setTextColor(0xff333333);
                    }
                } else {
                    //平台
                    String[] strArray = myFeedbackModel.getMessage().split("\.");
                    int suffixIndex = strArray.length - 1;
                    if (strArray[suffixIndex].equals("png") || strArray[suffixIndex].equals("jpg")) {
                        holder.tv_text1.setText("[图片]");
                        holder.tv_text1.setTextColor(0xff5973f6);
                    } else {
                        holder.tv_text1.setText(myFeedbackModel.getMessage());
                        holder.tv_text1.setTextColor(0xff5973f6);
                    }
                    holder.tv_who1.setText("客服:");
                    holder.tv_who1.setTextColor(0xff5973f6);
                }
    
                if (myFeedbackModel.getSource().equals("0")) {
                } else {
                    if (myFeedbackModel.getRead().equals("0")) {
                        //top3  left7
                        holder.tv_reply1.setTextColor(0xfffefefe);
                        holder.tv_reply1.setPadding(14, 0, 14, 0);
                        holder.tv_reply1.setBackgroundResource(R.drawable.unread);
                        holder.tv_reply1.setText("未读");
                    } else if (myFeedbackModel.getRead().equals("1")) {
                        holder.tv_reply1.setTextColor(0xfffefefe);
                        holder.tv_reply1.setPadding(14, 0, 14, 0);
                        holder.tv_reply1.setBackgroundResource(R.drawable.read);
                        holder.tv_reply1.setText("已读");
                    } else {
                        holder.tv_reply1.setTextColor(0xffbebebe);
                        holder.tv_reply1.setPadding(14, 0, 14, 0);
                        holder.tv_reply1.setBackgroundResource(R.drawable.read);
                        holder.tv_reply1.setText("暂无回复");
                    }
                }
            }
            // 如果设置了回调,则设置点击事件
            if (mOnItemClickLitener != null) {
                holder.itemView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        int pos = holder.getLayoutPosition();
                        mOnItemClickLitener.onItemClick(holder.itemView, pos);
                    }
                });
    
                holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
                    @Override
                    public boolean onLongClick(View v) {
                        int pos = holder.getLayoutPosition();
                        mOnItemClickLitener.onItemLongClick(holder.itemView, pos);
                        return false;
                    }
                });
            }
        }
    
    //用于转换时间 public static String getUserDate(long sformat) { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String sd = formatter.format(new Date(sformat)); // 时间戳转换成时间 (这里也是毫秒时间戳) return sd; } @Override
    //判断有多少个item
    //问号表达式说明

    形式:条件表达式 ?程序块1 :程序块2 ;

    含义:如果条件表达式为真,则本程序语句执行程序块1,程序块1的值即为整个表达式的值, 否则为表达式2的值。

    value.toArray(new String[value==null?0:value.size()]));
        public int getItemCount() {
            return mydata == null ? 0 : mydata.size();
        }
    
        public static class ViewHolder extends RecyclerView.ViewHolder {
    
            TextView tv_date, tv_reply, tv_who, tv_text, tv_date1, tv_reply1, tv_who1, tv_text1, tv_text2,tv_solve;
            RelativeLayout rl_new;
    
            public ViewHolder(View itemView) {
                super(itemView);
                //日期
                tv_date = (TextView) itemView.findViewById(R.id.tv_date);
                //暂无回复
                tv_reply = (TextView) itemView.findViewById(R.id.tv_reply);
                //谁说的话
                tv_who = (TextView) itemView.findViewById(R.id.tv_who1);
                //文本
                tv_text = (TextView) itemView.findViewById(R.id.tv_text);
                //新消息日期
                tv_date1 = itemView.findViewById(R.id.tv_date1);
                //标签
                tv_reply1 = itemView.findViewById(R.id.tv_reply1);
                //平台 or 用户
                tv_who1 = itemView.findViewById(R.id.tv_who1);
                //新消息
                tv_text1 = itemView.findViewById(R.id.tv_text1);
                //新消息布局
                rl_new = itemView.findViewById(R.id.rl_new);
                //平台和用户都没有消息显示这个
                tv_text2 = itemView.findViewById(R.id.tv_text2);
                //已解决
                tv_solve = itemView.findViewById(R.id.tv_solve);
            }
        }
    }
    

      工具类自己写 主要是从接口获取到的数据(写完参数快捷生成get,set方法 Alt+insert)

    第一个参数是创建 构造函数

    第四个是创建get,set方法

    public class MyFeedbackModel {
        //反馈序列号
        String serialNumber;
        //回复时间
        String createTime;
        //当前返回状态(0:未解决;1:已解决;2:已搁置)
        int state;
        //最新回复内容
        String message;
        //反馈内容
        String content;
        //0:未读;1:已读
        String read;
        //消息类型(0:文本;1:图片;;2:系统)
        String type;
        //消息来源(0:用户;1:平台)
        String source;
        //反馈创建时间
        long feedbackTime;
        private String img1;
        private String img2;
        private String img3;
    
        public MyFeedbackModel(String serialNumber, String createTime, int state, String message, String content, String read, String type, String source, long feedbackTime, String img1, String img2, String img3) {
            this.serialNumber = serialNumber;
            this.createTime = createTime;
            this.state = state;
            this.message = message;
            this.content = content;
            this.read = read;
            this.type = type;
            this.source = source;
            this.feedbackTime = feedbackTime;
            this.img1 = img1;
            this.img2 = img2;
            this.img3 = img3;
        }
    
        public String getImg1() {
            return img1;
        }
    
        public void setImg1(String img1) {
            this.img1 = img1;
        }
    
        public String getImg2() {
            return img2;
        }
    
        public void setImg2(String img2) {
            this.img2 = img2;
        }
    
        public String getImg3() {
            return img3;
        }
    
        public void setImg3(String img3) {
            this.img3 = img3;
        }
    
        public String getSerialNumber() {
            return serialNumber;
        }
    
        public void setSerialNumber(String serialNumber) {
            this.serialNumber = serialNumber;
        }
    
        public String getCreateTime() {
            return createTime;
        }
    
        public void setCreateTime(String createTime) {
            this.createTime = createTime;
        }
    
        public int getState() {
            return state;
        }
    
        public void setState(int state) {
            this.state = state;
        }
    
        public String getMessage() {
            return message;
        }
    
        public void setMessage(String message) {
            this.message = message;
        }
    
        public String getContent() {
            return content;
        }
    
        public void setContent(String content) {
            this.content = content;
        }
    
        public String getRead() {
            return read;
        }
    
        public void setRead(String read) {
            this.read = read;
        }
    
        public String getType() {
            return type;
        }
    
        public void setType(String type) {
            this.type = type;
        }
    
        public String getSource() {
            return source;
        }
    
        public void setSource(String source) {
            this.source = source;
        }
    
        public long getFeedbackTime() {
            return feedbackTime;
        }
    
        public void setFeedbackTime(long feedbackTime) {
            this.feedbackTime = feedbackTime;
        }
    }
    

      

  • 相关阅读:
    数组
    课堂验证性实验总结
    《大道至简》第二章读后感
    大道至简第一章伪代码
    大道至简
    python学习笔记1
    19maven依赖冲突
    18SSM资源整合2
    18SSM资源整合
    17mybatis注解开发
  • 原文地址:https://www.cnblogs.com/wang-jingyuan/p/12174769.html
Copyright © 2011-2022 走看看