簡體   English   中英

在列表視圖中動態更改(列表項)TextView的顏色

[英]Dynamically change color of (List item)TextView in Listview

我正在使用ListView,如下文件名browser.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>

我在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"/>

整個程序在listView上顯示sdcard的所有文件,並在單擊任何listitem時,將該文件名保存到sharedPrefernce ..現在,我想在ListView中更改文件名(列表項)的文本顏色在SharedPrefernce中。

[編輯]:這里使用ArrayAdapter默認構造函數列出列表視圖中的所有項目

請給我一些建議..謝謝..

我們可以在Adapter的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()為FALSE

第二

現在,當在itemClickListener中將TRUE at position clicked設置為TRUE at position clicked ,保存的文件類似saved.set(position,TRUE);

並調用notifyDataSetChanged(); 在該位置將TRUE設置為該聽眾之后。

第三

現在在Adapter類的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();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM