a354c925b4716da8288bd4676debdde752da42e5
[JavaForFun] /
1 package de.example.exampletdd.fragment.specific;
2
3 import android.content.Context;
4 import android.view.LayoutInflater;
5 import android.view.View;
6 import android.view.ViewGroup;
7 import android.widget.ArrayAdapter;
8 import android.widget.TextView;
9 import de.example.exampletdd.R;
10
11 public class WeatherSpecificDataAdapter extends ArrayAdapter<WeatherSpecificDataEntry> {
12     private final int resource;
13
14     public WeatherSpecificDataAdapter(final Context context, final int resource) {
15         super(context, 0);
16
17         this.resource = resource;
18     }
19
20     @Override
21     public View getView(final int position, final View convertView,
22             final ViewGroup parent) {
23
24         // We need to get the best view (re-used if possible) and then
25         // retrieve its corresponding ViewHolder, which optimizes lookup
26         // efficiency
27         final View view = this.getWorkingView(convertView);
28         final ViewHolder viewHolder = this.getViewHolder(view);
29         final WeatherSpecificDataEntry entry = this.getItem(position);
30
31
32         // Setting the text view
33         viewHolder.headerView.setText(entry.getHeader());
34         viewHolder.bodyView.setText(entry.getBody());
35
36
37         return view;
38     }
39
40     private View getWorkingView(final View convertView) {
41         // The workingView is basically just the convertView re-used if possible
42         // or inflated new if not possible
43         View workingView = null;
44
45         if(null == convertView) {
46             final Context context = this.getContext();
47             final LayoutInflater inflater = (LayoutInflater)context.getSystemService
48                     (Context.LAYOUT_INFLATER_SERVICE);
49
50             workingView = inflater.inflate(this.resource, null);
51         } else {
52             workingView = convertView;
53         }
54
55         return workingView;
56     }
57
58     private ViewHolder getViewHolder(final View workingView) {
59         // The viewHolder allows us to avoid re-looking up view references
60         // Since views are recycled, these references will never change
61         final Object tag = workingView.getTag();
62         ViewHolder viewHolder = null;
63
64
65         if((null == tag) || !(tag instanceof ViewHolder)) {
66             viewHolder = new ViewHolder();
67
68             viewHolder.headerView = (TextView) workingView
69                     .findViewById(R.id.weather_data_entry_header);
70             viewHolder.bodyView = (TextView) workingView
71                     .findViewById(R.id.weather_data_entry_body);
72
73             workingView.setTag(viewHolder);
74
75         } else {
76             viewHolder = (ViewHolder) tag;
77         }
78
79         return viewHolder;
80     }
81
82     /**
83      * ViewHolder allows us to avoid re-looking up view references
84      * Since views are recycled, these references will never change
85      */
86     private static class ViewHolder {
87         public TextView headerView;
88         public TextView bodyView;
89     }
90
91 }