前にAndroid StudioでAPIを使った情報取得をしたのでリスト化してみます。
こんな感じ。
まずはリストのレイアウトをXMLに追加します。
1 2 3 4 5 6 7 8 |
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <ListView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/listViewValue"></ListView> </LinearLayout> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:id="@+id/name" android:textSize="24dp" android:layout_weight="1" /> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:id="@+id/price" android:textSize="24dp" android:layout_weight="1" /> </LinearLayout> |
リストアイテムをいじれば表示させる情報を変えることができます。
次にリストを表示するためのアダプタを作成します。
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 |
public class MyAdapter extends BaseAdapter { Context context; LayoutInflater layoutInflater = null; List<JSONObject> ceList; public MyAdapter(Context context) { this.context = context; this.layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } public void setCeList(List<JSONObject> ceList) { this.ceList = ceList; } @Override public int getCount() { return ceList.size(); } @Override public Object getItem(int position) { return ceList.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { convertView = layoutInflater.inflate(R.layout.list_values,parent,false); try{ ((TextView)convertView.findViewById(R.id.name)).setText(ceList.get(position).getString("MarketAssetCode")); ((TextView)convertView.findViewById(R.id.price)).setText(ceList.get(position).getString("LastPrice")); }catch (JSONException e) { Log.e("API",e.getMessage()); } } } |
setCeListでJSONを渡して、getViewで表示する項目を決めています。
後は取得したJSONを定義したアダプタに設定するだけです。
1 2 3 4 5 6 |
List<JSONObject> celist = new ArrayList<>(cemap.values()); ListView listCeVal = (ListView) mainAct.findViewById(R.id.listViewValue); Myadapter adpt = new Myadapter(mainActivity); adpt.setCeList(celist); listCeVal.setAdapter(adpt); |
CEのAPI返り値をマップにしたので values
メソッドで配列にしてます。
Listviewはスクロールもできるため一覧を見れるようになりました。