ソース掲示板




すべてから検索

キーワード   条件 表示 現行ログ 過去ログ トピックス 名前 本文

  メンテナンス 前画面に戻る

対象スレッド 件名: ExpandableListView を使用して、タイトルデータをクリックしたら明細をその下に表示する
名前: lightbox
処理選択
パスワード

件名 ExpandableListView を使用して、タイトルデータをクリックしたら明細をその下に表示する
名前 lightbox
コメント
@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