1. 程式人生 > >Android本地實現已讀未讀功能

Android本地實現已讀未讀功能

一、效果圖:


二、實現方式:

思路:在item的點選事件中將所有點選過的訊息id儲存到一個串中用“,”隔開,在介面卡中取出串再判斷裡面是否已經存在過當前點選過的item的id,如果存在則標記為已讀。

1.MessageActivity:

關鍵程式碼:

 private void initAdapter(final List<MessageBeen.BodyEntity.DataEntity> publicList) {
        if(publicList==null) {
            Toast.makeText(this, "暫無更多資料", Toast.LENGTH_SHORT).show();
        }else {
            if(mMessageAdapter==null) {
                mMessageAdapter = new MessageAdapter(this, publicList);
                recyclerview.setAdapter(mMessageAdapter);
                mMessageAdapter.setIntemClickListener(new MessageAdapter.MyItemClickListener() {
                    @Override
                    public void onItemClick(View view, int position) {
                        Bundle bundle = new Bundle();
                        MessageBeen.BodyEntity.DataEntity dataBean= publicList.get(position);
                        //取出儲存的已經點選了的條目集合
                        String alreadyLook = SPUtils.getStringType(MessageListActivity.this,Constants.MESSAGE_ALREADY_LOOKED);
                        //判斷當前的id是否存在儲存的字串中
                        if (!alreadyLook.contains(dataBean.getMsgId() + "")) {//如果不存在已讀的字串中
                            SPUtils.putStringType(MessageListActivity.this,Constants.MESSAGE_ALREADY_LOOKED,alreadyLook+dataBean.getMsgId()+",");
                            //重新整理介面卡
                            mMessageAdapter.notifyDataSetChanged();
                        }
                        publicList.get(position).setReadState(true);
                        //第三步:根據當前型別獲取URL
                        String url = AppConfig.BASE_HOST + "party-api/m/message/detail/" + publicList.get(position).getMsgId() + ".html";
                        bundle.putString(Constants.NEW_DETAIL_URL,url);
                        AppManager.getInstance().jumpActivity(MessageListActivity.this, MessageDetailActivity.class, bundle);
                    }
                });
            }else {
                Log.e("TAG", "更新資料");
                mMessageAdapter.updateDatas(publicList);
            }
        }
    }
2.MessageAdapter:


關鍵程式碼:

  @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        isLoadTime= MoudleControlUtils.isNeedView(mContext,AppConfig.MODEL_NEWS_PUBLIC_TIME);
        String publicTime = mNewList.get(position).getPublicTime();
        String resultTime=null;
        if(publicTime==null) {
            publicTime="";
        }else {
            if (isLoadTime) {
                resultTime = publicTime;
            } else {
                resultTime = publicTime.substring(0, 10);
            }
        }
        holder.message_item_title.setText(mNewList.get(position).getTitle());
        holder.message_item_time.setText(resultTime);
        if (SPUtils.getStringType(context,Constants.MESSAGE_ALREADY_LOOKED).contains(mNewList.get(position).getMsgId() + "")) {
            holder.tv_messageState.setText("已讀");
            holder.tv_messageState.setTextColor(Color.rgb(255, 102, 102));
            holder.tv_messageState.setTextColor(context.getResources().getColor(R.color.p_204_204_204));
        } else {
            holder.tv_messageState.setText("未讀");
            holder.tv_messageState.setTextColor(Color.rgb(255, 102, 102));
        }
    }