2012-03-13 5 views
5

Estoy usando un ListView como se muestra debajo en el nombre del archivo browse.xml. MétodoCambia dinámicamente el color de (elemento de la Lista) TextView en Listview

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

</ListView> 

Y estoy llenando esta ListView dentro onCreate() como:

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 se muestra a continuación como:

<?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"/> 

Todo este programa es la que muestra toda la archivos de sdcard en listView y al hacer clic en cualquier elemento de lista, guardo ese nombre de archivo en sharedPrefernce..Ahora quiero cambiar el color de texto del nombre de archivo (elementos de lista) en el ListView que están en SharedPrefernce ..

[EDIT]: Aquí estoy usando constructor por defecto ArrayAdapter para listar todos los elementos en una vista de lista

Pls me sugieren algo .. Gracias ..

Respuesta

3

Podemos cambiar el color de texto de forma dinámica para la lista elemento en el getView() de Adapter.

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, pero no estoy usando cualquiera de la clase adaptador – Kanika

+0

sin usar el adaptador cómo está utilizando row.xml para el elemento –

+0

de la lista Estoy usando el constructor predeterminado ArrayAdapter para agregue datos de files1 en row.xml textview para listar todos los elementos en ListView – Kanika

2

PRIMERA

Tome una

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

primer set Todo elemento de medios guardados 0 a files1.size() para FALSO

SEGUNDO

ahora, cuando en itemClickListener establecido en TRUE at position clicked salvado como, saved.set(position,TRUE);

y llame notifyDataSetChanged(); en que listenher después de establecer TRUE en esa posición.

TERCER

ahora en getView del adaptador Clase

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

y también añadir esto en su clase adaptador,

@Override 
public int getItemViewType(int position) { 

return position; 
} 

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

pero no estoy usando ninguna de la clase Adaptador ...Pls me leyó pregunta – Kanika

+3

entonces usted necesita utilizar, estimado – MKJParekh

Cuestiones relacionadas