2012-03-25 13 views
0

Ich möchte den Stil einer Textansicht in einer Listenansicht ändern, wenn auf diese Zeile geklickt wird. Dieser Text sollte fokussiert bleiben, bis eine andere Zeile gedrückt wird. Ich verwende eine Unterklasse von BaseAdapter, um die Zeilen in der Listenansicht zu erstellen. Wäre toll, wenn ich Hilfe dafür bekommen könnte.Ändern des Stils in Textansicht in einer Listenansichtszeile beim Drücken

Dies ist Teil meiner Basisadapterklasse.

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; 
} 

Ich möchte txtViewStreet Farbe in der Zeile, die geklickt hat, grün zu ändern.

Grundsätzlich gilt:

Row1

Row2

Row3

Benutzer drücken Row 2

Row1

Row2

Row3

Benutzer Presse Row 1

Row1

Row2

Row3

+0

Genau das, was Unterklasse von 'BaseAdapter'? – Luksprog

Antwort

0

Sie ein Feld in Ihrer Adapter-Klasse machen könnte, dass hält die aktuell ausgewählter Punkt:

int current = -1; 

Diese Position wird jedes Mal, wenn eine Zeile klicken aktualisiert werden, in den onItemClick():

protected void onListItemClick(ListView l, View v, int position, long id) { 
     adapter.current = position; 
     adapter.notifyDataSetChanged(); 
    } 

dann in Ihrer getView() Methode:

//... 
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

Das hat funktioniert, Cheers =) – user1163392

Verwandte Themen