2012-03-13 4 views
5

Tôi đang sử dụng một ListView như được hiển thị bên dưới trong tệp browse.xml. phương phápTự động thay đổi màu của (Mục danh sách) TextView trong Listview

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

</ListView> 

Và tôi điền ListView này bên trong onCreate() như:

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 được hiển thị dưới đây:

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

toàn bộ chương trình này được đang hiển thị tất cả các tập tin của sdcard tại listView và bấm vào bất kỳ listitem, đang tiết kiệm tên tập tin đó vào sharedPrefernce .. Bây giờ tôi muốn thay đổi màu văn bản của tên tập tin (List items) trong ListView có trong SharedPrefernce ..

[EDIT]: Ở đây đang sử dụng constructor ArrayAdapter mặc định để liệt kê tất cả các mục trong một listview

Xin gợi ý cho tôi một cái gì đó .. Cảm ơn ..

Trả lời

3

Chúng tôi có thể thay đổi Format động cho danh sách mục trong getView() của Adapter.

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

Không nhưng tôi không sử dụng bất kỳ của lớp Adaptor – Kanika

+0

mà không sử dụng bộ chuyển đổi cách bạn đang sử dụng row.xml cho mục danh sách –

+0

Đang sử dụng hàm tạo mặc định của ArrayAdapter để thêm dữ liệu files1 vào textview row.xml để liệt kê tất cả các mục trong ListView – Kanika

2

FIRST

Đi một

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

đầu tiên thiết lập Tất cả các yếu tố của lưu phương tiện từ 0 đến files1.size() để FALSE

THỨ HAI

.210

bây giờ khi trong itemClickListener thiết TRUE at position clicked trong lưu như, saved.set(position,TRUE);

và gọi notifyDataSetChanged(); trong listenher rằng sau khi cài đặt TRUE tại vị trí đó.

BA

bây giờ trong getView của Adaptor Lớp

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

và cũng thêm này trong lớp adapter của bạn,

@Override 
public int getItemViewType(int position) { 

return position; 
} 

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

nhưng không sử dụng bất kỳ của lớp Adapter ...Xin vui lòng đọc tôi ques – Kanika

+3

sau đó bạn cần phải sử dụng, thân yêu – MKJParekh