This repository has been archived by the owner on Nov 25, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 6
/
StationAdapter.java
141 lines (123 loc) · 4.25 KB
/
StationAdapter.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
package name.starnberger.guenther.android.cbw;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.ArrayList;
import name.starnberger.guenther.android.cbw.R;
import android.content.Context;
import android.graphics.Color;
import android.location.Location;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
import android.widget.TextView;
class StationAdapter extends ArrayAdapter<Station> {
private ListStations listStations;
private ArrayList<Station> items;
private Location curLocation = null;
public StationAdapter(ListStations listStations, int textViewResourceId,
ArrayList<Station> items) {
super(listStations, textViewResourceId, items);
this.listStations = listStations;
this.items = items;
}
private String roundLoc(float loc) {
NumberFormat numberFormat = new DecimalFormat("0.0");
return numberFormat.format(loc);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater) listStations
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.row, null);
}
Station o = items.get(position);
if (o != null) {
TextView station_title = (TextView) v
.findViewById(R.id.station_title);
if (station_title != null) {
station_title.setText(o.getStationName());
}
TextView station_description = (TextView) v
.findViewById(R.id.station_description);
if (station_description != null) {
station_description.setText(o.getStationDescription());
}
TextView bikes_available_num = (TextView) v
.findViewById(R.id.bikes_available_num);
if (bikes_available_num != null) {
String bikes_available_str = o.getBikesAvailable();
int bikes_available = Integer.parseInt(bikes_available_str);
bikes_available_num.setText(bikes_available_str);
if (bikes_available == 0) {
bikes_available_num.setTextColor(Color.RED);
} else if (bikes_available <= 3) {
bikes_available_num.setTextColor(Color.YELLOW);
} else {
bikes_available_num.setTextColor(Color.WHITE);
}
}
TextView boxes_available_num = (TextView) v
.findViewById(R.id.boxes_available_num);
if (boxes_available_num != null) {
String boxes_available_str = o.getBoxesAvailable();
int boxes_available = Integer.parseInt(boxes_available_str);
boxes_available_num.setText(boxes_available_str);
if (boxes_available == 0) {
boxes_available_num.setTextColor(Color.RED);
} else if (boxes_available <= 3) {
boxes_available_num.setTextColor(Color.YELLOW);
} else {
boxes_available_num.setTextColor(Color.WHITE);
}
}
LinearLayout distance_and_active_row = (LinearLayout) v.findViewById(R.id.distance_and_active_row);
TextView distance = (TextView) v.findViewById(R.id.distance);
TextView distance_num = (TextView) v.findViewById(R.id.distance_num);
TextView distance_km = (TextView) v.findViewById(R.id.distance_km);
float dist = 0;
if(curLocation != null) {
dist = curLocation.distanceTo(o.getLocation()) / 1000;
}
if (distance_num != null) {
if(curLocation == null) {
distance.setVisibility(View.INVISIBLE);
distance_num.setVisibility(View.INVISIBLE);
distance_km.setVisibility(View.INVISIBLE);
} else {
distance.setVisibility(View.VISIBLE);
distance_num.setVisibility(View.VISIBLE);
if (dist < 100) {
distance_num.setText(roundLoc(dist));
distance_km.setVisibility(View.VISIBLE);
} else {
distance_num.setText("?");
distance_km.setVisibility(View.INVISIBLE);
}
}
}
TextView active_view = (TextView) v
.findViewById(R.id.active);
boolean active_val = o.isActive();
if (active_view != null) {
if(active_val) {
active_view.setVisibility(View.INVISIBLE);
} else {
active_view.setVisibility(View.VISIBLE);
}
}
if(active_val && (curLocation == null)) {
distance_and_active_row.setVisibility(View.GONE);
} else {
distance_and_active_row.setVisibility(View.VISIBLE);
}
}
return v;
}
public void setCurLocation(Location curLocation) {
this.curLocation = curLocation;
}
}