我有一个列表,每个元素都有一些字符串和图像,如何更改每个元素的背景颜色(LinearLayot)?
我的代码:
1)Activity.java中的数组
ListView listview;
int[] list_photo = {R.drawable.a, R.drawable.b, R.drawable.c, R.drawable.d, R.drawable.e};
String[] list_name = {"A", "B", "C", "D", "E"};
String[] list_email = {"a@", "b@", "c@", "d@", "e@"};
String[] list_phone = {"12", "12", "12", "12", "12", "12"};
TrainersAdapter adapter;
和Actvity.java中的OnCreate
listview = (ListView) findViewById(R.id.trainerslist);
adapter = new TrainersAdapter(getApplicationContext(), R.layout.list_trainers);
listview.setAdapter(adapter);
int i = 0;
for (i = 0; i < 5; i++) {
TrainersDataProvider dataProvider = new TrainersDataProvider(list_photo[i], list_name[i], list_email[i], list_phone[i]);
adapter.add(dataProvider);
}
2)然后我有适配器:
import android.content.Context;
import android.provider.ContactsContract;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import org.w3c.dom.Text;
import java.util.List;
import java.util.*;
/**
* Created by dd on 2016-03-06.
*/
public class TrainersAdapter extends ArrayAdapter {
List list = new ArrayList();
public TrainersAdapter(Context context, int resource) {
super(context, resource);
}
static class Datahandler{
ImageView photo;
TextView name;
TextView email;
TextView phone;
}
@Override
public void add(Object object) {
super.add(object);
list.add(object);
}
@Override
public int getCount() {
return this.list.size();
}
@Override
public Object getItem(int position) {
return this.list.get(position);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row;
row = convertView;
Datahandler handler;
if(convertView==null){
LayoutInflater inflater = (LayoutInflater) this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate(R.layout.list_trainers,parent,false);
handler = new Datahandler();
handler.photo=(ImageView) row.findViewById(R.id.trainerslist_photo);
handler.name=(TextView) row.findViewById(R.id.trainerslist_name);
handler.email=(TextView) row.findViewById(R.id.trainerslist_email);
handler.phone=(TextView) row.findViewById(R.id.trainerslist_phone);
row.setTag(handler);
}
else{
handler = (Datahandler) row.getTag();
}
TrainersDataProvider dataProvider;
dataProvider = (TrainersDataProvider) this.getItem(position);
handler.photo.setImageResource(dataProvider.getTrainer_photo());
handler.name.setText(dataProvider.getTrainer_name());
handler.email.setText(dataProvider.getTrainer_email());
handler.phone.setText(dataProvider.getTrainer_phone());
return row;
}
}
3)和Dataprovider
public class TrainersDataProvider {
private int trainer_photo;
private String trainer_name;
private String trainer_email;
private String trainer_phone;
public TrainersDataProvider(int trainer_photo,String trainer_name, String trainer_email, String trainer_phone){
this.setTrainer_photo(trainer_photo);
this.setTrainer_email(trainer_email);
this.setTrainer_name(trainer_name);
this.setTrainer_phone(trainer_phone);
}
public String getTrainer_email() {
return trainer_email;
}
public void setTrainer_email(String trainer_email) {
this.trainer_email = trainer_email;
}
public String getTrainer_name() {
return trainer_name;
}
public void setTrainer_name(String trainer_name) {
this.trainer_name = trainer_name;
}
public String getTrainer_phone() {
return trainer_phone;
}
public void setTrainer_phone(String trainer_phone) {
this.trainer_phone = trainer_phone;
}
public int getTrainer_photo() {
return trainer_photo;
}
public void setTrainer_photo(int trainer_photo) {
this.trainer_photo = trainer_photo;
}
}
我希望Activity.java中有颜色数组(如照片,名称,电子邮件和手机)并将其放到Dataprovider构造函数中,此颜色应该是list element中linearlayout的背景。
答案 0 :(得分:1)
给linearlayout一个像android:id =&#34; @ + id / background_layout&#34;的id。然后在Datahandler中将其定义为LinearLayout背景,初始化它handler.background =(LinearLayout)row.findViewById(R.id.background_layout);并执行handler.backgorund.setBackgroundColor(来自arrayList的颜色);
答案 1 :(得分:0)
您想以编程方式更改背景颜色吗?在#onCreate
方法中,您可以访问ListView
View
,该View#setBackgroundColor
来自 html,
body {
height: 100%;
}
.fill {
height: 100%;
min-height: 100%;
}
#content {
background-color: AliceBlue;
height: 100%;
padding-left: 0;
}
#sidebar {
background-color: DarkGray;
height: 100%;
padding: 3px;
}
#collapseme{
background-color: black;
width: 10px;
height: 100%;
float: left;
}
<li>
<a href="function" link()="" {="" [native="" code]="" }="" class="ui-btn ui-btn-icon-right ui-icon-carat-r">undefined</a>
</li>
(http://developer.android.com/reference/android/view/View.html#setBackgroundColor(int))。