如何在android中设置ListView背景项颜色

时间:2017-09-12 11:10:24

标签: android listview colors textview

我有一个带有三个TextView的自定义列表视图。每一行都会显示人名,电子邮件和日期。现在我想设置一个人的天数小于120的红色,我也想设置一个绿色,哪个人的天数大于120.如何解决我的问题??任何帮助将不胜感激。

My ListView Image

person_show

   public class person_show extends Activity
{
    static int total_day;
    List<personInfo>PersonInfo;
    public MyAdapter adapter;
    static Vector<String>email = new Vector<>();
    static Vector<String>name = new Vector<>();
    static Vector<String>city = new Vector<>();
    static String[] Name,Email,City;
    ListView list;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.personlistview);
        Firebase.setAndroidContext(this);
        //show_person();
        Person_Show();
    }

    private void Person_Show()
    {
        PersonInfo = new ArrayList<>();
        list = (ListView)findViewById(R.id.list);

            String[] value = new String[]{" No Data Found"};
            ArrayAdapter<String> Adapter = new ArrayAdapter<String>(this,R.layout.persontextview,value);
            list.setAdapter(Adapter);

            PersonInfo.add(new personInfo("abc","abc@gmail.com","65 days"));
            PersonInfo.add(new personInfo("xyz","xyz@gmail.com","130 days"));
            PersonInfo.add(new personInfo("pqr","pqr@gmail.com","70 days"));
            PersonInfo.add(new personInfo("ABC","ABC@gmail.com","140 days"));
            for(int i = 0;i<email.size();i++)
                PersonInfo.add(new personInfo(name.get(i),email.get(i),"150 days"));
            adapter = new MyAdapter(this,PersonInfo);
            list.setAdapter(adapter);

    }

MyAdapter

public class MyAdapter extends BaseAdapter
{
    List<personInfo>PersonInfo;
    Context context;
    public MyAdapter(Context context,List<personInfo>personInfo)
    {
        this.context = context;
        this.PersonInfo = personInfo;
    }
    @Override
    public int getCount() {
        return PersonInfo.size();
    }

    @Override
    public Object getItem(int position) {
        return PersonInfo.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View view = inflater.inflate(R.layout.person_layout,parent,false);
        TextView txt_name,txt_email,txt_phone;
        txt_name = (TextView)view.findViewById(R.id.t_name);
        txt_email = (TextView)view.findViewById(R.id.t_email);
        txt_phone = (TextView)view.findViewById(R.id.t_phone);
        txt_name.setText(PersonInfo.get(position).getName());
        txt_email.setText(PersonInfo.get(position).getEmail());
        txt_phone.setText(PersonInfo.get(position).getPhone());
        return view;
    }
}

personInfo

public class personInfo
{
    String name,phone,email;
    public personInfo(String name,String email,String phone)
    {
        this.name = name ;
        this.email = email;
        this.phone = phone;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

2 个答案:

答案 0 :(得分:0)

如果您使用RecyclerView

,请在适配器或查看持有人中添加此代码
 if(yourObject.days>120){
    rootLayout.setBackgroundColor(ContextCompat.getColor(mContex‌​t, R.color.green));
    }else{
    rootLayout.setBackgroundColor(ContextCompat.getColor(mContex‌​t, R.color.red));
    }

答案 1 :(得分:0)

显示适配器代码。首先检查 days days 没有天。 days 应为 int 类型。

检查 LOGIC

String[] splited = PersonInfo.get(position).getPhone().split("\\s+"); //65 days
String str_Days=splited[0]; //65
int days = Integer.valueOf(str_Days);

if (days<=120) 
{
        Your_LayoutOBJ.setBackgroundColor(Color.parseColor("#54D66A"));
}
 else 
 {
        Your_LayoutOBJ.setBackgroundColor(Color.parseColor("#FFFFFF"));
 }

<强> FYI

Your_LayoutOBJ 是您的RootLayout。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/rootLayout"
    >

    .....

</RelativeLayout>

声明 LIKE Textview and Set background color