在按下列表视图行的textview时更改样式
问题描述:
我想在点击该行时更改列表视图行中textview的样式。该文本应该保持专注,直到按下另一行。我正在使用BaseAdapter的子类在列表视图中构建行。如果我能够得到一些帮助来实现这一点,那将是非常棒的。在按下列表视图行的textview时更改样式
这是我的基础适配器类的一部分。
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
MyHolder holder;
LayoutInflater inflater = context.getLayoutInflater();
if (convertView == null) {
convertView = inflater.inflate(R.layout.street_listrow, null);
holder = new MyHolder();
holder.txtViewStreet= (TextView) convertView
.findViewById(R.id.StreetName);
holder.txtViewArea = (TextView) convertView
.findViewById(R.id.StreetArea);
holder.txtViewDist = (TextView) convertView
.findViewById(R.id.StreetDistance);
holder.ivGo = (ImageView) convertView.findViewById(R.id.StreetGo);
convertView.setTag(holder);
} else {
holder = (MyHolder) convertView.getTag();;
}
holder.txtViewStreet.setText(street.get(position).getStreet());
holder.txtViewArea.setText(street.get(position).getArea());
holder.ivGo.setBackgroundResource(R.drawable.goicon);
int tempDist = Integer.parseInt(street.get(position).getDistance());
if(tempDist>1000){
Double bigDist = (double)tempDist/1000;
dist = df.format(bigDist) +" km";
}else{
dist = tempDist+" m";
}
holder.txtViewDist.setText(dist);
return convertView;
}
我希望txtViewStreet在单击的行上将颜色更改为绿色。
基本上:
ROW1
行2
ROW3
用户按下第2行
ROW1
行2
ROW3
用户按排1
ROW1
行2
ROW3
答
你可以使你的适配器类的字段将举行当前选择的项目:
int current = -1;
这个位置你点击一排,每次将被更新,在onItemClick()
:
protected void onListItemClick(ListView l, View v, int position, long id) {
adapter.current = position;
adapter.notifyDataSetChanged();
}
然后在getView()
方法:
//...
holder.txtViewStreet.setText(street.get(position).getStreet());
if (position == current) {
holder.txtViewStreet.setTextColor(Color.GREEN);
} else {
holder.txtViewStreet.setTextColor(Color.WHITE); // or what is your default color
}
//...
+0
这工作,干杯=) – user1163392 2012-03-25 14:32:47
究竟是什么'BaseAdapter'的子类? – Luksprog 2012-03-25 13:34:37