Динамическое изменение цвета (элемента списка)TextView в Listview



Я использую ListView, как показано ниже в filename browse.XML.



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

</ListView>


И я заполняю этот listView внутри метода onCreate () следующим образом:



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


Ряд.xml показан ниже как:



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


Вся эта программа показывает все файлы sdcard в listView и по щелчку любого listitem, я сохраняю это имя файла в sharedPrefernce..Теперь я хочу изменить цвет текста имени файла (элементов списка) в ListView, которые находятся в SharedPrefernce..



[править]: Здесь я использую конструктор ArrayAdapter default для перечисления всех элементов в listview



Пожалуйста, предложите мне что-нибудь..
Спасибо..

700   2  

2 ответов:

Мы можем динамически изменять цвет текста для элемента списка в getView () адаптера.

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

Первый

Возьмите один

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

Первый набор весь элемент сохраненного означает 0 в files1.size() to FALSE

Второй

Теперь, когда в itemClickListener установлено TRUE at position clicked в сохраненном например, saved.set(position,TRUE);

И вызовите notifyDataSetChanged(); в этом слушателе после установки TRUE в этой позиции.

Третий

Теперь в getView класса адаптера

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

А также добавьте это в свой класс адаптера,

@Override
public int getItemViewType(int position) {

return position;
}

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

Comments

    Ничего не найдено.