2012-03-13 71 views
5

我在文件名browse.xml中使用ListView,如下所示。在列表視圖中動態更改(列表項)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此ListView的()方法爲:

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如下所示爲:

<?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的文件在列表視圖和點擊任何listitem,將該文件的名稱保存到sharedPrefernce..Now我想改變列表視圖中文件名稱(列表項目)的文本顏色在那裏SharedPrefernce ..

[編輯]:我在這裏使用ArrayAdapter默認構造函數來列出一個列表視圖中的所有項目

PLS建議我東西.. 謝謝..

回答

3

我們可以動態改變文字顏色的列表項目在適配器的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; 
} 
+0

沒有,但我不使用任何適配器類 – Kanika 2012-03-13 06:32:43

+0

的沒有使用適配器你如何使用row.xml列表項 – 2012-03-13 06:43:20

+0

我正在使用ArrayAdapter默認構造函數來將files1數據添加到row.xml文本視圖中,以列出ListView中的所有項目 – Kanika 2012-03-13 06:51:54

2

FIRST

取一

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

第一設定保存裝置0的所有元件files1.size()爲FALSE

SECOND

現在當itemClickListener設置TRUE at position clicked在保存 一樣,saved.set(position,TRUE);

,並在該位置設置爲TRUE後,調用notifyDataSetChanged();在listenher。

第三

現在適配器的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

但我沒有使用任何適配器類的...請閱讀我的問題 – Kanika 2012-03-13 06:36:12

+3

然後你需要使用,親愛的 – MKJParekh 2012-03-13 07:02:43

相關問題