List元素中的背景颜色

时间:2016-03-09 14:08:38

标签: java android android-studio

我有一个列表,每个元素都有一些字符串和图像,如何更改每个元素的背景颜色(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的背景。

2 个答案:

答案 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))。