androidでシンプルなリストビュー
昨年は2回くらい
abcなんとかというのに参加したのでandroidにかなり興味が出てきた。
iphonは実機への投入で年間のお金が発生するのがちょっと気になっていたのでまずは簡単に実機投入などができるandroidで実験している
リストビュー
RSSリストやメニューを表示するのに利用する機能で一覧で表示する
今回はシンプルに文字列だけで作成
実装
空のアクティビティにリストビューを配置
アクティビティにリストを表示する処理を追加
package jp.mshige1979.app.sampleapplist1; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.widget.ArrayAdapter; import android.widget.ListView; public class MainActivity extends ActionBarActivity { private ListView listview; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 表示用データ String[] list = {"aaaa", "bbbb", "cccc", "dddd"}; // 紐付け listview = (ListView)findViewById(R.id.listView); // ArrayAdapterへ設定 ArrayAdapter<String> adapter = new ArrayAdapter<String>( MainActivity.this, android.R.layout.simple_expandable_list_item_1, list); // リストビューへ設定 listview.setAdapter(adapter); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }
※一度、ArrayAdapterで作成して値をリストビューに渡す必要が有るようです
結果
イベントを突っ込んだ
package jp.mshige1979.app.sampleapplist1; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.Toast; public class MainActivity extends ActionBarActivity { private ListView listview; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 表示用データ String[] list = {"aaaa", "bbbb", "cccc", "dddd"}; // 紐付け listview = (ListView)findViewById(R.id.listView); // ArrayAdapterへ設定 ArrayAdapter<String> adapter = new ArrayAdapter<String>( MainActivity.this, android.R.layout.simple_expandable_list_item_1, list); // リストビューへ設定 listview.setAdapter(adapter); // リストをクリック listview.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // リストビューの項目を取得 ListView listview = (ListView) parent; String item = (String)listview.getItemAtPosition(position); // 表示 Toast.makeText(getApplicationContext(), item, Toast.LENGTH_SHORT).show(); } }); // リストを長押し listview.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { // リストビューの項目を取得 ListView listview = (ListView) parent; String item = (String)listview.getItemAtPosition(position); // 表示 Toast.makeText(getApplicationContext(), item + " long select ", Toast.LENGTH_SHORT).show(); return false; } }); // リストを選択 listview.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { // 選択した場合 // リストビューの項目を取得 ListView listview = (ListView) parent; String item = (String)listview.getItemAtPosition(position); // 表示 Toast.makeText(getApplicationContext(), item + " item select ", Toast.LENGTH_SHORT).show(); } @Override public void onNothingSelected(AdapterView<?> parent) { // 選択していない場合 // 表示 Toast.makeText(getApplicationContext(), " no item select ", Toast.LENGTH_SHORT).show(); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }
※選択時のイベントはフォーカス関連が移った場合などに発行されます。今回は文字列だけなので検出は難しいかお
所感
文字だけだろイマイチ使い道には困る感じなのでリストビューをカスタムして複数の項目を自在に編集できるようにする必要があります。
とりあえず、今回はここまで