RecyclerView.Adapter

刚刚逛了一下github看到的,觉得很赞 所以记录分享一下 原文地址:https://github.com/nkzawa/socket.io-android-chat

1import android.content.Context; 2import android.support.v7.widget.RecyclerView; 3import android.view.LayoutInflater; 4import android.view.View; 5import android.view.ViewGroup; 6import android.widget.TextView; 7 8import java.util.List; 9 10 11public class MessageAdapter extends RecyclerView.Adapter<MessageAdapter.ViewHolder> { 12 13    private List<Message> mMessages; 14    private int[] mUsernameColors; 15 16    public MessageAdapter(Context context, List<Message> messages) { 17        mMessages = messages; 18        mUsernameColors = context.getResources().getIntArray(R.array.username_colors); 19    } 20 21    @Override 22    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 23        int layout = -1; 24        switch (viewType) { 25        case Message.TYPE_MESSAGE: 26            layout = R.layout.item_message; 27            break; 28        case Message.TYPE_LOG: 29            layout = R.layout.item_log; 30            break; 31        case Message.TYPE_ACTION: 32            layout = R.layout.item_action; 33            break; 34        } 35        View v = LayoutInflater 36                .from(parent.getContext()) 37                .inflate(layout, parent, false); 38        return new ViewHolder(v); 39    } 40 41    @Override 42    public void onBindViewHolder(ViewHolder viewHolder, int position) { 43        Message message = mMessages.get(position); 44        viewHolder.setMessage(message.getMessage()); 45        viewHolder.setUsername(message.getUsername()); 46    } 47 48    @Override 49    public int getItemCount() { 50        return mMessages.size(); 51    } 52 53    @Override 54    public int getItemViewType(int position) { 55        return mMessages.get(position).getType(); 56    } 57 58    public class ViewHolder extends RecyclerView.ViewHolder { 59        private TextView mUsernameView; 60        private TextView mMessageView; 61 62        public ViewHolder(View itemView) { 63            super(itemView); 64 65            mUsernameView = (TextView) itemView.findViewById(R.id.username); 66            mMessageView = (TextView) itemView.findViewById(R.id.message); 67        } 68 69        public void setUsername(String username) { 70            if (null == mUsernameView) return; 71            mUsernameView.setText(username); 72            mUsernameView.setTextColor(getUsernameColor(username)); 73        } 74 75        public void setMessage(String message) { 76            if (null == mMessageView) return; 77            mMessageView.setText(message); 78        } 79 80        private int getUsernameColor(String username) { 81            int hash = 7; 82            for (int i = 0, len = username.length(); i < len; i++) { 83                hash = username.codePointAt(i) + (hash << 5) - hash; 84            } 85            int index = Math.abs(hash % mUsernameColors.length); 86            return mUsernameColors[index]; 87        } 88    } 89}
点赞
收藏

评论区

加载中...

相关推荐

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

vue echarts vue

1、git地址https://github.com/ecomfe/vueecharts(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fgithub.com%2Fecomfe%2Fvueecharts)2、使用(1)安装npminstallvueecha

Armbian编译以及定制

Armbian项目地址Github: https://github.com/armbian/build(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fgithub.com%2Farmbian%2Fbuild)ArmbianforTVBox项目地址Github: h

React Native 0.58 正式版中文更新日志

原文地址:https://github.com/reactnativecommunity/reactnativereleases/blob/master/CHANGELOG.md0580(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fgithub.com%2Freactna

Redis 5种数据结构及对应使用场景(面试必修课)

本文收录在GitHub地址https://github.com/chengxynds/SpringbootNotebook(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fgithub.com%2Fchengxynds%2FSpringbootNotebook)

EasyExcel使用记录

GITHUB地址:https://github.com/alibaba/easyexcel(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fgithub.com%2Falibaba%2Feasyexcel)1.POM文件添加依赖:<dependency