Динамическое изменение цвета (элемента списка)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
Пожалуйста, предложите мне что-нибудь..
Спасибо..
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