コピーして使いやすいように、ソースコードにパッケージに依存する記述が無いので注意して下さい。 (画面は、.MainActivity なのでそのまま使用可能です) ListView は、Android で定義済みの android.R.layout.simple_list_item_1 を使用しています。それに伴い、WebData クラスでは、toString を Override して 氏名が表示されるようにしています。 JSON データは、PHP でも使用し、コードの見通しを良くする為、プロバティは日本語(UTF8)で記述されています。
{
"社員コード": "0001",
"氏名": "浦岡 友也",
"フリガナ": "ウラオカ トモヤ",
"所属": "0003",
"性別": "0",
"作成日": "2005-09-12 00:00:00",
"更新日": "2005-11-28 00:00:00",
"給与": "270000",
"手当": "9000",
"管理者": null,
"生年月日": "2010-01-01",
"削除区分": null,
"所属名": "営業部第三"
}
▼ HttpAccess パッケージのダウンロード( 解凍して、main\java フォルダの中に コピーして下さい ) ※ OkHttp より 最新の Gradle の記述を取得して build.gradle の dependencies の最後に貼り付けて下さい 例) compile 'com.squareup.okhttp3:okhttp:3.8.1' JSON データへのリンク ※ fld_search=氏名の一部 で条件を指定できます MainActivity
public class MainActivity extends AppCompatActivity {
// *******************************
// データ定義
// *******************************
private String url = "https://lightbox.sakura.ne.jp/demo/template/lightbox/syain-req-jquery-mysql/app-get.php";
// *******************************
// 変数定義
// *******************************
private ArrayAdapter<WebData> arrayAdapter;
private ListView listView;
private HttpAccess httpAccess;
// *******************************
// 初期処理
// *******************************
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// リストビュー
listView = (ListView) MainActivity.this.findViewById(R.id.listView);
// リストビューの行をタップした時の処理
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// アダプターを取得
ArrayAdapter<WebData> arrayAdapter = (ArrayAdapter<WebData>)parent.getAdapter();
// 行データを取得
WebData webData;
webData = arrayAdapter.getItem(position);
Log.i("lightbox", String.format("社員コード : %s",webData.社員コード));
Log.i("lightbox", webData.氏名);
Log.i("lightbox", webData.フリガナ);
Log.i("lightbox", String.format("所属 : %s %s",webData.所属,webData.所属名));
Log.i("lightbox", String.format("性別 : %s", webData.性別.equals("0") ? "男性" : "女性" ));
NumberFormat numberFormat = NumberFormat.getNumberInstance();
Log.i("lightbox", String.format("給与 : %s", numberFormat.format(webData.給与)));
if ( webData.手当 == 0 ) {
Log.i("lightbox", "手当てはありません");
}
else {
Log.i("lightbox", String.format("手当 : %s", numberFormat.format(webData.手当)));
}
if ( webData.管理者 != null ) {
Log.i("lightbox", String.format("管理者コード : %s",webData.管理者));
}
else {
Log.i("lightbox", "管理者です");
}
if ( webData.生年月日 != null ) {
Log.i("lightbox", String.format("生年月日 : %s",webData.生年月日));
}
else {
Log.i("lightbox", "生年月日は登録されていません");
}
}
});
// データが入るオブジェクト
arrayAdapter = new ArrayAdapter<WebData>(MainActivity.this, android.R.layout.simple_list_item_1);
// 初期化
arrayAdapter.clear();
// リストビューにデータが入るオブジェクトをセット
listView.setAdapter(arrayAdapter);
// WEB アクセス用オブジェクト
httpAccess = new HttpAccess(url + "?fld_search=村");
}
// *******************************
// メニューの処理
// *******************************
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
// *******************************
// 全て表示
// *******************************
if (id == R.id.action_1) {
httpAccess.setUrl(url);
httpAccess.sendGet(new HttpAccess.OnAsyncTaskListener() {
@Override
public void onAsyncTaskListener(String s) {
// Gson インスタンス
Gson gson = new Gson();
// Gson によるデシリアライズ
DataList dataList = gson.fromJson(s,DataList.class);
// dataList.row が WebData の配列
for( WebData rowData : dataList.row) {
Log.i("lightbox",rowData.氏名);
}
// クリア
arrayAdapter.clear();
// データセット
arrayAdapter.addAll(dataList.row);
}
});
return true;
}
// *******************************
// 一部表示
// *******************************
if (id == R.id.action_2) {
httpAccess.setUrl(url + "?fld_search=村");
httpAccess.sendGet(new HttpAccess.OnAsyncTaskListener() {
@Override
public void onAsyncTaskListener(String s) {
// Gson インスタンス
Gson gson = new Gson();
// Gson によるデシリアライズ
DataList dataList = gson.fromJson(s,DataList.class);
// dataList.row が WebData の配列
for( WebData rowData : dataList.row) {
Log.i("lightbox",rowData.氏名);
}
// クリア
arrayAdapter.clear();
// データセット
arrayAdapter.addAll(dataList.row);
}
});
return true;
}
return super.onOptionsItemSelected(item);
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
menu_main.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">
<item
android:id="@+id/action_1"
android:orderInCategory="100"
android:title="全て表示"
app:showAsAction="never" />
<item
android:id="@+id/action_2"
android:orderInCategory="100"
android:title="一部表示"
app:showAsAction="never" />
</menu>
DataList.java
public class DataList {
WebData[] row;
}
WebData.java
public class WebData {
String 社員コード;
String 氏名;
String フリガナ;
String 所属;
String 性別;
int 給与;
int 手当;
String 管理者;
String 生年月日;
String 所属名;
@Override
public String toString() {
return 氏名;
}
}
build.gradle
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
testCompile 'junit:junit:4.12'
compile 'com.google.code.gson:gson:2.8.1'
compile 'com.squareup.okhttp3:okhttp:3.8.1'
}
|
|
【2017 Android Studioの最新記事】
- 別に納品するわけでは無いので、Android の ListView のカスタマイズなんてこれで十分でしょ / TestArrayAdapter バージョン2
- Java : Class 構造より、update 文を作成する
- ViewSwitcher を使用した2画面アプリ (5) : SQLiteデータを更新する
- ViewSwitcher を使用した2画面アプリ (4) : SQLiteデータをインポートしてリストビューに表示する
- Android Studio にインポートして使用する SQLite データベースを MDB より作成する VBScript
- ViewSwitcher を使用した2画面アプリ (3) : 画面部分の作成と画面切り替えテスト『画面をコントロールする Helper クラスの作成』
- ViewSwitcher を使用した2画面アプリ (2) : 画面部分の作成と画面切り替えテスト『画面の作成』
- ViewSwitcher を使用した2画面アプリ (1) : 画面部分の作成と画面切り替えテスト『メニューの作成』
- OkHttp を使用した HttpAccess クラスで Web 上の 画像をダウンロードして表示するテンプレート
- OkHttp を使用した HttpAccess クラスで Web 上の PHP アプリに対してファイルをアップロードするテンプレート
- OkHttp を使用した HttpAccess クラスで Web 上の掲示板に投稿(POST)するテンプレート
- Okhttp を使用した、GET、POST、ファイルアップロードを楽に実装できる HttpAccess クラス
- Android の assets フォルダーに保存した 400x320 の画像ファイルの扱い
- Android の drawable フォルダーに保存した 400x320 の画像ファイルの6種類の扱いと Density
- Android での保存用テキストデータの扱いを okio で簡素化する
- Android 6.0 : テストの為の Runtime Permission の対応を自動化するテンプレート
- Android Studio : Runtime Permission 等の裏方作業を MainActivity にさせて、本来の処理は継承したサブクラスで行う( カメラを呼び出して画像を保存させ、I..
- Android 6.0 エミュレータで 複数の Runtime Permission の対応を簡潔に吸収するクラス( CheckMyPermission )
- Android 6.0 の Runtime Permission に対応する前に、AndroidManifest.xml に権限の記述の必要無いプライベートな書き込みで情報を収集する
- Android Studio : エミュレータで Notification(通知)のテスト


コピーして使いやすいように、ソースコードにパッケージに依存する記述が無いので注意して下さい。
(画面は、.MainActivity なのでそのまま使用可能です)
ListView は、Android で定義済みの 




