2012-03-13 126 views
5

ファイル名browse.xmlにListViewを使用しています。ListViewの(List item)TextViewの色を動的に変更

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

</ListView> 

そして、私はのonCreate()メソッド内で、このリストビューを充填しています:この全体のプログラムはすべて表示していますされ

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

:row.xmlは次のように次のようになり

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

リストビューでsdcardのファイルをクリックし、listitemをクリックすると、そのファイル名をsharedPrefernceに保存しています。次に、SharedPrefernceにあるリストビューのファイル名(リストアイテム)のテキストの色を変更します。

[EDIT]:ここでPlsは私を示唆

リストビュー内のすべての項目を一覧表示するArrayAdapterのデフォルトコンストラクタを使用しています何か.. おかげ..

我々はリストのための動的textcolorは変更することができ

答えて

3

アダプタのgetView()内のitem。

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

ありませんが、アダプタクラスのいずれかを使用していない – Kanika

+0

アダプタを使用せずにリスト項目にrow.xmlを使用する方法 –

+0

ArrayAdapterのデフォルトのコンストラクタを使用してListViewのすべての項目をリスト表示するには、files1データをrow.xml textviewに追加します。 – Kanika

2

FIRST

)第files1.sizeに保存手段0のすべての要素は、(を設定された1つ

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

を取るFALSE

SECOND

itemClickListenersaved.set(position,TRUE);

、同様に保存された にTRUE at position clickedを設定し、その位置でTRUEに設定した後、そのlistenherでnotifyDataSetChanged();を呼び出すとき。

THIRDアダプタクラスの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(); 
} 
+0

ただし、使用していませんアダプタクラスの...Plsは私の質問を読む – Kanika

+3

あなたは、親愛なる – MKJParekh

関連する問題