コメント |
@SHOW
[[解説ページ]]
http://logicalerror.seesaa.net/article/439941469.html(ExpandableListView を使用して、タップした時に明細データ表示する)
@END
@HTML
<a href="http://winofsql.jp/download/tools.jar">tools.jar
<img src="http://winofsql.jp/image/lightbox_download.jpg" style="border: solid 1px #000000"></a>
@HEND
https://github.com/google/gson(Google Gson)
https://lightbox.sakura.ne.jp/homepage/demo/data/csvtype/json.php(JSON データ)
https://lh3.googleusercontent.com/-QfyD5Jtbu1c/V4OAs32aBQI/AAAAAAAAfh0/lR2kk8ckGb8GyAGaEJKzNFByU3Km4n6TgCCo/s400/Screenshot_2016-07-11-20-08-17%255B1%255D.png
[[MainActivity]]
@DIV
package lightbox.july.expandablelistviewsimpledata;
import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.TextView;
import com.google.gson.Gson;
import jp.android.work.Tools;
public class MainActivity extends AppCompatActivity {
private JsonDataList json;
private MyExpandableListAdapter adapter;
private ExpandableListView elv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 開くリストビューのインスタンス
elv = (ExpandableListView) MainActivity.this.findViewById(R.id.expandableListView);
// JSON データ(文字列)
String data_url = "https://lightbox.sakura.ne.jp/homepage/demo/data/csvtype/json.php";
Tools.callHttpGet(data_url, "utf-8", new Tools.OnAsyncTaskListener() {
@Override
public void onAsyncTaskListener(String s) {
Gson gson = new Gson();
// デシリアライズ
json = gson.fromJson(s, JsonDataList.class);
adapter = new MyExpandableListAdapter(json);
elv.setAdapter(adapter);
}
});
}
// 開くリストビュー用のアダプタ
private class MyExpandableListAdapter extends BaseExpandableListAdapter{
private JsonDataList json;
public MyExpandableListAdapter(JsonDataList json) {
this.json= json;
}
// ******************************
// 親データの表示
// ( 実際は データの subject )
// ******************************
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
View rowView = convertView;
if (rowView == null) {
// 現在の View の取得
LayoutInflater inflater = (LayoutInflater) MainActivity.this.getSystemService
(Context.LAYOUT_INFLATER_SERVICE);
rowView = inflater.inflate(R.layout.group_view, null);
}
// Adapter にセットされているこのポジションの MyData を取得
JsonData data = (JsonData)adapter.getGroup(groupPosition);
// group_view にデータをセット
TextView tv = (TextView) rowView.findViewById(R.id.textView);
tv.setText(data.subject);
return rowView;
}
// ******************************
// 子データの表示
// ( 実際は データの 残りの項目 )
// ******************************
@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
View rowView = convertView;
if (rowView == null) {
// 現在の View の取得
LayoutInflater inflater = (LayoutInflater) MainActivity.this.getSystemService
(Context.LAYOUT_INFLATER_SERVICE);
rowView = inflater.inflate(R.layout.child_view, null);
}
// Adapter にセットされているこのポジションの MyData を取得
JsonData data = (JsonData)adapter.getGroup(groupPosition);
// child_view にデータをセット
TextView tv2 = (TextView) rowView.findViewById(R.id.textView2);
tv2.setText(data.name);
TextView tv3 = (TextView) rowView.findViewById(R.id.textView3);
tv3.setText(data.datetime);
TextView tv4 = (TextView) rowView.findViewById(R.id.textView4);
tv4.setText(data.text);
return rowView;
}
@Override
public int getGroupCount() {
return json.item.length;
}
@Override
public int getChildrenCount(int groupPosition) {
return 1;
}
@Override
public Object getGroup(int groupPosition) {
return json.item[groupPosition];
}
@Override
public Object getChild(int groupPosition, int childPosition) {
return null;
}
@Override
public long getGroupId(int groupPosition) {
return 0;
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return 0;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return false;
}
}
private class JsonData {
String text;
String subject;
String name;
String datetime;
}
private class JsonDataList {
JsonData[] item;
}
}
@END |