SQLの窓

2015年06月10日


できるだけ難しい事をせずに、Android のリストビューでタイトルをクリックしたらそのページを表示する

Android Studio + Android 5.1(Lollipop)



これでは、リストビュー内のコンテンツに汎用性が全くありませんが、そういう複雑なリストビューはきちんと設計して誰でも使えるようにするべきなので、これはこれである意味汎用性があると思います。
package app.lightbox.winofsql.jp.listviewa;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;


public class MainActivity extends Activity {

	class MyData {
		public String title = null;
		public String url = null;
		public MyData(String myTitle,String myUrl) {
			title = myTitle;
			url = myUrl;
		}
		@Override
		public String toString() {
			return title;
		}
	}

	private MyData[] mydata	 = new MyData[] {
			new MyData("Yahoo! ニュース","http://news.yahoo.co.jp/"),
			new MyData("Yahoo! 雨雲ズームレーダー","http://weather.yahoo.co.jp/weather/zoomradar/"),
			new MyData("ねとらぼ","http://nlab.itmedia.co.jp/")
	};

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		// リストビュー(MyData)用のアダプターを作成
		ArrayAdapter<MyData> adapter =
			new ArrayAdapter<MyData>(MainActivity.this, android.R.layout.simple_list_item_1);
		// データをセット
		adapter.addAll( mydata );
		// リストビューに適用
		ListView listView = (ListView) MainActivity.this.findViewById(R.id.listView);
		listView.setAdapter(adapter);

		// リストビューのアイテムがクリックされた時の処理
		listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
			public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

				// クリックされたアイテムを取得
				MyData mydata = (MyData)parent.getItemAtPosition(position);
				// LogCatに表示
				Log.i("lightbox", mydata.title);
				Log.i("lightbox", mydata.url);

				// URL を開く
				callBrowser(mydata.url );

			}
		});

	}

	private void callBrowser( String url ) {
		// ブラウザの呼び出し
		Uri uri = Uri.parse(url);
		Intent intent = new Intent(Intent.ACTION_VIEW, uri);
		if (intent.resolveActivity(getPackageManager()) != null) {
			startActivity(intent);
			return;
		}

		// 対応するアプリが無い
		Toast.makeText(
				MainActivity.this,
				"ブラウザを呼び出せません",
				Toast.LENGTH_LONG
		).show();
		return;

	}

}

※ 配列部分を外部 JSON にすれば読み替えは簡単にできる予定。

画面定義
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
				xmlns:tools="http://schemas.android.com/tools"
				android:layout_width="match_parent"
				android:layout_height="match_parent"
				android:paddingLeft="@dimen/activity_horizontal_margin"
				android:paddingRight="@dimen/activity_horizontal_margin"
				android:paddingTop="@dimen/activity_vertical_margin"
				android:paddingBottom="@dimen/activity_vertical_margin"
				tools:context=".MainActivity">

	<ListView
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		android:id="@+id/listView"
		android:layout_alignParentTop="true"
		android:layout_alignParentStart="true"/>
</RelativeLayout>



【1 Android Studioの最新記事】
posted by lightbox at 2015-06-10 23:18 | 1 Android Studio | このブログの読者になる | 更新情報をチェックする
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり