0
APIからのデータを使用してカスタムListViewを作成しようとしています。データはリストで表示されますが、アイコン付きのタイトルと字幕のカスタムレイアウト形式では表示されません。現在、2つのTextView項目として表示されています。私は行の見出しと行の副見出しとして表示する行の状態として表示する行の名前を取得したいと思います。正しい方向のポイントは非常に高く評価されるでしょう。以下のコードをご覧ください。APIからカスタムリストビューを更新できないのはなぜですか?
public class MainActivity extends AppCompatActivity {
ListView list;
String[] titles;
String [] description;
int[] imgs = {R.drawable.tube_icon,R.drawable.tube_icon,R.drawable.tube_icon,R.drawable.tube_icon,R.drawable.tube_icon,
R.drawable.tube_icon,R.drawable.tube_icon,R.drawable.tube_icon,R.drawable.tube_icon,R.drawable.tube_icon,R.drawable.tube_icon,
R.drawable.tube_icon,R.drawable.tube_icon,R.drawable.tube_icon};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
////// GET DATA FROM API AND ADDS TO LIST ARRAY
//list view and arrayList
final ListView listView = (ListView) findViewById(list1);
final ArrayList<String> tubeLines = new ArrayList<>();
final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, tubeLines);
listView.setAdapter(arrayAdapter);
RequestQueue queue = Volley.newRequestQueue(this);
String url ="https://api.tfl.gov.uk/line/mode/tube,overground,dlr,tflrail/status";
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONArray array = new JSONArray(response);
for (int i = 0; i < array.length(); i++) {
JSONObject object = array.optJSONObject(i);
String line = object.optString("name");
//nested array
JSONArray arrayStatus = object.getJSONArray("lineStatuses");
int len = arrayStatus.length();
String statusSeverityDescription = null;
for (int j = 0; j < len; j++) {
JSONObject o = arrayStatus.getJSONObject(j);
statusSeverityDescription = o.optString("statusSeverityDescription", "");
}
if (line != null) {
tubeLines.add(line + " "+ statusSeverityDescription);
}
}
// Once we added the string to the array, we notify the arrayAdapter
arrayAdapter.notifyDataSetChanged();
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
queue.add(stringRequest);
}
}
class MyAdapter extends ArrayAdapter<String> {
Context context;
int [] images;
String [] mytitles;
String [] myDescriptions;
MyAdapter(Context c,String[] titles,int imgs[],String[]desc)
{
super(c,R.layout.row,R.id.lineName,titles);
this.context=c;
this.images=imgs;
this.mytitles=titles;
this.myDescriptions=desc;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View row = inflater.inflate(R.layout.row,parent,false);
ImageView myImage = (ImageView) row.findViewById(R.id.lineIcon);
TextView myTitle = (TextView) row.findViewById(R.id.lineName);
TextView myDesc = (TextView) row.findViewById(R.id.lineStatus);
myImage.setImageResource(images[position]);
myTitle.setText(mytitles[position]);
myDesc.setText(myDescriptions[position]);
return row;
}
}