2016-04-14 12 views
0

私はカスタムアダプターのリストを持っており、リスト項目または変数の内容に基づいて背景色を設定したいと考えています。 リストは、日付といくつかの情報を含むテキストビューで構成されます。私は新しい日付が表示されたときに変更する背景色を必要とするコンテンツ/変数に基づいてlistitemの背景を変更する

..

ITEM1:2 2016年3月 - >ブルー

ITEM2:2 2016年3月 - >ブルー

ITEM3 :2016年3月3 - >グレー

ITEM4:2016年3月4 - >ブルー

...

listAdapterで使用できる変数(isNewDate)を設定できますか?

マイリストアダプタは:あなたがHistoryListItemモデルクラスに格納日にvaribleを追加する必要が

public class HistoryListViewAdapter extends ArrayAdapter<HistoryListItem> { 

     public HistoryListViewAdapter(Context context, List<HistoryListItem> items) { 
      super(context, R.layout.history_list_item, items); 
     } 

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

      if(convertView == null) { 
       // inflate the ListView item layout 
       LayoutInflater inflater = LayoutInflater.from(getContext()); 
       convertView = inflater.inflate(R.layout.history_list_item, parent, false); 
       //different color if new date 

       if (newdate == 0) //How to find if it is a "new date" 
        //togle color 

       convertView.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.colorPrimaryDark)); 

       // initialize the view holder 
       viewHolder = new ViewHolder(); 
       viewHolder.ivIcon = (ImageView) convertView.findViewById(R.id.ivIcon); 
       viewHolder.tvTextfield = (TextView) convertView.findViewById(R.id.tvTextfield); 
       viewHolder.tvNote = (ImageView) convertView.findViewById(R.id.tvNote); 
       convertView.setTag(viewHolder); 
      } else { 
       // recycle the already inflated view 
       viewHolder = (ViewHolder) convertView.getTag(); 
      } 

      // update the item view 
      HistoryListItem item = getItem(position); 
      viewHolder.ivIcon.setImageDrawable(item.icon); 
      viewHolder.tvTextfield.setText(item.textfield); 
      viewHolder.tvNote.setImageDrawable(item.note); 

      return convertView; 
     } 

     private static class ViewHolder { 
      ImageView ivIcon; 
      TextView tvTextfield; 
      ImageView tvNote; 
     } 
    } 
+0

isNewDateとは何を意味しますか?リスト項目の背景色を変更する必要がある基準は何ですか? –

+0

isNewDateは、バックグラウンドカラーが最後のアイテムと同じであるか、または2番目のバックグラウンドカラーに切り替える必要がある場合は、falseに変更することができます。 「リストアイテムに最後のアイテムとは異なる日の情報が含まれている場合」{背景色の切り替え}「 各リストアイテムには特定の日の情報が含まれています。毎日0個、1個、または複数のアイテムが存在する可能性があります。 リストデータはdbに格納されます。 – EirikO

答えて

0

。 アダプタクラスは次のようになります。

public class HistoryListViewAdapter extends ArrayAdapter<HistoryListItem> { 

//Varible to STORE current Date value 
String previousDate = null ; 

     public HistoryListViewAdapter(Context context, List<HistoryListItem> items) { 
      super(context, R.layout.history_list_item, items); 
     } 

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

      if(convertView == null) { 
       // inflate the ListView item layout 
       LayoutInflater inflater = LayoutInflater.from(getContext()); 
       convertView = inflater.inflate(R.layout.history_list_item, parent, false); 
       //different color if new date 

       //This is how you How to find if it is a "new date" 
       if(null== previousDate || !item.dateField.equalIgnorecase(previousDate)) 
{ 
//Store current date as previous date 
previousDate = item.dateField ; 

//TODO add togle color logic here 
} 


       convertView.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.colorPrimaryDark)); 

       // initialize the view holder 
       viewHolder = new ViewHolder(); 
       viewHolder.ivIcon = (ImageView) convertView.findViewById(R.id.ivIcon); 
       viewHolder.tvTextfield = (TextView) convertView.findViewById(R.id.tvTextfield); 
       viewHolder.tvNote = (ImageView) convertView.findViewById(R.id.tvNote); 
       convertView.setTag(viewHolder); 
      } else { 
       // recycle the already inflated view 
       viewHolder = (ViewHolder) convertView.getTag(); 
      } 

      // update the item view 
      HistoryListItem item = getItem(position); 
      viewHolder.ivIcon.setImageDrawable(item.icon); 
      viewHolder.tvTextfield.setText(item.textfield); 
      viewHolder.tvNote.setImageDrawable(item.note); 

      return convertView; 
     } 

     private static class ViewHolder { 
      ImageView ivIcon; 
      TextView tvTextfield; 
      ImageView tvNote; 
     } 
    } 
+0

ありがとうございます。単にHistoryListItemを移動しなければならなかったitem = getItem(position); "item"を使う前に – EirikO

関連する問題