• android listView 查看的信息改变颜色


     
     
    最近给公司做了一个查看资讯的应用,参考别的应用,要加上(已读过的信息要用别的颜色进行区分)的需要.
    下面是实现的部分代码:
     
     
     
    继承自BaseAdapter
    public View getView(int position, View convertView, ViewGroup parent) {

            // 利用ViewHolder来保存与convertView相关联的子View,避免调用 findViewById方法,以提高效率
            ViewHolder viewHolder = null;

            // 重复利用 convertView,convertView是旧的View,建议先判断是否为空,
            
    // 如果不为空,可以修改其内容来显示新的row
            if (convertView == null) {
                // Log.d("MyBaseAdapter", "新建convertView,position="+position);

                convertView = mInflater.inflate(myresource, null);
                viewHolder = new ViewHolder();
                viewHolder.txtViewTitle = (TextView) convertView
                        .findViewById(myto[0]);

                viewHolder.txtViewDateTime = (TextView) convertView
                        .findViewById(myto[1]);

                viewHolder.txtViewNewsId = (TextView) convertView
                        .findViewById(myto[2]);

                convertView.setTag(viewHolder);

            } else {
                viewHolder = (ViewHolder) convertView.getTag();
                // Log.d("MyBaseAdapter", "旧的convertView,position="+position);

            }

            Class cla = null;
            Field field = null;
            String value = null;
            TextView tv = null;
            Info info = (Info) mylist.get(position);
            boolean isRead = false;
            m_MyDataBaseAdapter.open();
            isRead = m_MyDataBaseAdapter.getIsRead(info.getNewsId());//用来判断该信息是否已读过
            m_MyDataBaseAdapter.close();
            
            cla = info.getClass();
            for (int i = 0; i < myfrom.length; i++) {

                try {
                    field = cla.getDeclaredField(myfrom[i]);
                    field.setAccessible(true);
                } catch (SecurityException e) {
                    e.printStackTrace();
                } catch (NoSuchFieldException e) {
                    e.printStackTrace();
                }
                try {
                    value = (String) field.get(info);
                } catch (IllegalArgumentException e) {
                    e.printStackTrace();
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                }

                tv = (TextView) convertView.findViewById(myto[i]);
                tv.setText(value);

                if (isRead == true && i == 0) {      //true 标明该信息已读过          
                    tv.setTextColor(myContext.getResources().getColor(R.color.isRead));
                } else if (isRead == false && i == 0) {  //false 标明该信息未读过 
                    //tv.setTextColor(myContext.getResources().getColor(R.color.isUnRead));

                    tv.setTextColor(android.graphics.Color.BLACK);
                }

            }
            return convertView;
        }

    从详细内容查看页返回时,要刷新ListView

        /**
         * 从其它activity返回时,刷新ListView
         
    */
        @Override
        protected void onRestart() {
            super.onRestart();
            myadapter.notifyDataSetChanged();//主要是为了刷新最后一次看信息的颜色
        }

     简单上个图:前两条是已经看过的,后两条是未看过的.

  • 相关阅读:
    javascript中数组去重的4种方法
    dede使用方法----实现英文版的搜索功能
    dede去掉当前位置position后面的箭头
    dede使用方法----如何转换时间戳
    Python字符串、元组、列表、字典互相转换的方法
    Python 列表的操作
    Python 元祖的操作
    Python 操作文件、文件夹、目录大全
    python文件目录操作大全
    python用time函数计算程序运行时间
  • 原文地址:https://www.cnblogs.com/yourancao520/p/2490157.html
Copyright © 2020-2023  润新知