2012-03-13 11 views
5

Używam ListView, jak pokazano poniżej w nazwie pliku browse.xml. MetodaDynamiczna zmiana koloru (pozycja listy) TextView w widoku listy

<ListView 
    android:id="@+id/listView1" 
    android:layout_width="250dp" 
    android:layout_height="match_parent" 
    android:layout_alignParentLeft="true" 
    android:layout_below="@+id/relativeLayout1" > 

</ListView> 

A ja wypełnienie tej ListView wewnątrz onCreate() jako:

files1=new ArrayList<String>(); 
File sdcard=Environment.getExternalStorageDirectory(); 
files1 = getListFiles(new File(sdcard.getAbsolutePath()+File.separatorChar)); 
ArrayAdapter<String> fileList =new ArrayAdapter<String>(this, R.layout.row,files1); 

setListAdapter(fileList); 

row.xml jak pokazano poniżej:

<?xml version="1.0" encoding="utf-8"?> 
<TextView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/rowtext" 
    android:layout_width="fill_parent" 
    android:layout_height="40dp" 
    android:textSize="20dp" 
    android:textColor="#000000" 
    android:background="#FFFFFF"/> 

Cały ten program jest pokazuję wszystko files of sdcard at listView i kliknięcie dowolnego listitem, zapisuję nazwę tego pliku na sharedPrefernce .. Teraz chcę zmienić kolor tekstu nazwy pliku (elementy listy) w ListView, które są tam w SharedPrefernce ..

[EDIT]: Tutaj używam domyślnego ArrayAdapter konstruktora do listy wszystkie elementy w pogrupowanych

Pls zaproponować mi coś .. Dzięki ..

Odpowiedz

3

Możemy zmienić textColor dynamicznie do listy pozycja w getView() adaptera.

public View getView(int position, View convertView, ViewGroup parent) { 
    View row = convertView; 

    if (row == null) { 
     row = LayoutInflater.from(parent.getContext()).inflate(R.layout.row, null); 
    } 

    TextView listTitle = (TextView) row.findViewById(R.id.rowtext); 
    listTitle.setTextColor(Color.parseColor("#405478")); 

    return listTitle; 
} 
+0

no ale nie jestem przy użyciu dowolnej klasy Adapter – Kanika

+0

bez użycia adaptera, w jaki sposób używasz pliku wiersza.xml do elementu listy –

+0

Używam domyślnego konstruktora ArrayAdapter do dodaj pliki1 do text.xml textview, aby wyświetlić listę wszystkich pozycji w ListView – Kanika

2

PIERWSZA

Weźmy jeden

ArrayList<boolean> saved = new ArrayList<boolean>(); 

najpierw ustawić Wszystko elementem zapisanych pomocą 0 do files1.size(), aby FAŁSZ

DRUGIEGO

teraz kiedy w itemClickListener ustawić TRUE at position clicked w zapisanym jak, saved.set(position,TRUE);

i nazywają notifyDataSetChanged(); w tym listenher po ustawieniu TRUE w tej pozycji.

TRZECI

teraz w getView z adapterem klasy

public View getView(int position, View convertView, ViewGroup parent) { 

    View row = convertView; 
    position = = getItemViewType(position); 
    if(row==null){ 
     row = LayoutInflater.from(parent.getContext()).inflate(R.layout.row, null); 
    } 

    TextView listTitle = (TextView) row.findViewById(R.id.rowtext); 
    if(saved.get(position)==TRUE) 
    { 
      listTitle .setTextColor(Color.parseColor("#405478")); 
    } 
} 

a także dodać ten w swojej klasie adaptera

@Override 
public int getItemViewType(int position) { 

return position; 
} 

@Override 
public int getViewTypeCount() { 
return files1.size(); 
} 
+0

ale nie używam żadnego w klasie adaptera ...Pls przeczytał mi pytania: – Kanika

+3

, a potem musisz użyć, kochanie – MKJParekh

Powiązane problemy