2017-09-12 22 views
0

私は3つの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","[email protected]","65 days")); 
      PersonInfo.add(new personInfo("xyz","[email protected]","130 days")); 
      PersonInfo.add(new personInfo("pqr","[email protected]","70 days")); 
      PersonInfo.add(new personInfo("ABC","[email protected]","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; 
    } 
} 
+1

アダプターコード – Rajasekhar

+0

を投稿してください。どうしたのですか?あなたはどんな問題に直面していますか? – Piyush

+0

plesaeはいくつかのアダプタコードを貼り付けます。 –

答えて

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を宣言します。

0

あなたが使用している場合アダプターまたはViewホルダーにこのコードを追加します。 RecyclerView

if(yourObject.days>120){ 
    rootLayout.setBackgroundColor(ContextCompat.getColor(mContex‌​t, R.color.green)); 
    }else{ 
    rootLayout.setBackgroundColor(ContextCompat.getColor(mContex‌​t, R.color.red)); 
    } 
関連する問題