Để custom ListView ta có nhiều cách làm. Ta đã biết cách
tô màu chữ cho ListView, vậy có cách nào để tô màu từng dòng khác nhau hay
không?
Trước tiên, hãy sửa mảng dữ liệu thành ArrayList như sau.
Đầu tiên khai báo mảng
ArrayList<String> qua2
= new ArrayList<String>();
Tiếp theo thêm các phần tử vào mảng.
qua2.add("Pear");
qua2.add("Banana");
qua2.add("Cashew");
qua2.add("Orange");
qua2.add("Water
melon");
qua2.add("Peach");
qua2.add("Grape");
qua2.add("Mango");
qua2.add("Plum");
Tạo một class mới có tên listp, toàn bộ code
của class này như sau.
public class listp extends
ArrayAdapter<String> {
private final Activity context;
private final
ArrayList<String> item;
public listp(Activity
context, ArrayList<String> item) {
super(context,
R.layout.li, item);
// TODO
Auto-generated constructor stub
this.context=context;
this.item=item;
}
@SuppressLint({ "ViewHolder", "InflateParams" })
public View getView(int position,View
view,ViewGroup parent) {
LayoutInflater inflater=context.getLayoutInflater();
View
rowView=inflater.inflate(R.layout.li, null,true);
TextView txtTitle = (TextView)
rowView.findViewById(R.id.text);
txtTitle.setText(item.get(position));
if(position==0){
txtTitle.setTextColor(Color.parseColor("#FF0000"));
}
else if(position==1){
txtTitle.setTextColor(Color.parseColor("#FF7F50"));
}
else if(position==2){
txtTitle.setTextColor(Color.parseColor("#0000FF"));
}
else if(position==3){
txtTitle.setTextColor(Color.parseColor("#00ffff"));
}
else if(position==4){
txtTitle.setTextColor(Color.parseColor("#800080"));
}
else if(position==5){
txtTitle.setTextColor(Color.parseColor("#00FF00"));
}
else if(position==6){
txtTitle.setTextColor(Color.parseColor("#800000"));
}
else if(position==7){
txtTitle.setTextColor(Color.parseColor("#008000"));
}
else{
txtTitle.setTextColor(Color.parseColor("#FF00FF"));
}
return rowView;
};
}
Tức là ta tạo Adapter riêng theo kiểu của
mình. Trong các lệnh if ta đổ màu cho dòng tùy theo vị
trí của nó, bạn có thể sửa tùy ý.Sau đó vào class có ListView để sửa khai báo
Adapter như sau.
adapter= new
listp(this,qua2);
Lúc này chạy ra bạn sẽ thấy ListView đã có màu khác nhau cho từng dòng.
Nếu muốn chỉnh font cho ListView, ta thêm dòng sau vào trong class listp
txtTitle.setTypeface(Typeface.MONOSPACE, Typeface.BOLD);
Nếu muốn chỉnh độ lớn nhỏ font, thêm dòng sau
txtTitle.setTextSize(android.util.TypedValue.COMPLEX_UNIT_DIP, 16);
Chạy thử để thấy font đã thay đổi
No comments:
Post a Comment