android listView 查看的信息改变颜色
2012-05-08 15:16
447 查看
最近给公司做了一个查看资讯的应用,参考别的应用,要加上(已读过的信息要用别的颜色进行区分)的需要.
下面是实现的部分代码:
继承自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();//主要是为了刷新最后一次看信息的颜色
}
简单上个图:前两条是已经看过的,后两条是未看过的.
下面是实现的部分代码:
继承自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();//主要是为了刷新最后一次看信息的颜色
}
简单上个图:前两条是已经看过的,后两条是未看过的.
相关文章推荐
- Android 关于expandableListView childrenView 点击改变颜色
- android 改变listview的分割线的颜色
- Android 当listview某项被选中时,改变字体的颜色,采用XML来配置
- [Android]ListView 设置焦点与选中时改变item颜色
- android上改变listView的选中颜色
- android上改变listView的选中颜色
- Android中ListView设置点击颜色改变的想法
- android listview改变字体的大小、颜色
- Android开发实现ListView点击item改变颜色功能示例
- 【android】listview改变选中行字体颜色
- android listview改变字体的大小、颜色
- <学习笔记>Android ListView 通过指定position改变item颜色
- android listview 选中部分 文字颜色改变
- Android 改变ExpandableListView子级列表分割线的颜色
- android listview 触摸改变颜色直至下一次触摸恢复(包含层叠颜色显示)
- Android 代码模拟ListView item的点击事件并且改变背景颜色(笔记)
- android上改变listView的选中颜色
- Android上改变listView的选中颜色
- Android ListView 点击Item的时候,改变文字颜色和背景色
- 改变listview的item项的颜色、自定义expandlistview的group、item的颜色,改变、调用android.R.layout参数