在按下列表视图行的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

+0

究竟是什么'BaseAdapter'的子类? – Luksprog 2012-03-25 13:34:37

你可以使你的适配器类的字段将举行当前选择的项目:

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