LoginSignup
2
10

More than 5 years have passed since last update.

AndroidのListViewの作り方

Posted at

静的な値の場合

activity_main.xml
    <ListView
        android:id="@+id/list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:entries="@array/spice"
        />
strings.xml
<resources>
    <string name="app_name">ListBasic</string>
    <string-array name="spice">
        <item>胡椒</item>
        <item>ターメリック</item>
        <item>生姜</item>
        <item>コリアンダー</item>
        <item>ニンニク</item>
        <item>サフラン</item>
    </string-array>
</resources>

動的な生成

activity_main.xml
    <ListView
        android:id="@+id/list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        />
MainActivity.java
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final ArrayList<String> data = new ArrayList<>();
        data.add("胡椒1");
        data.add("ターメリック1");
        data.add("コリアンダー1");
        data.add("生姜");
        data.add("にんにく");
        data.add("サフラン");

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(
                this,
                android.R.layout.simple_expandable_list_item_1, data);
        ListView  list = (ListView) findViewById(R.id.list);
        list.setAdapter(adapter);
    }

イベント処理を追加する

MainActivity.java

list.setOnItemClickListener(
  new AdapterView.OnItemClickListener(){
  @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
      削除の場合//adapter.remove((String) ((TextView)view).getText());
      追加の場合//adapter.add("サフラン2");

    }
  }
);

長押しの場合は、こういうメソッドもある

list.setOnItemLongClickListener(
        new AdapterView.OnItemLongClickListener(){
            @Override
            public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
                return false;
            }
        }
);

単一選択可能なリストを生成する

activity_main.xml
    <ListView
        android:id="@+id/list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:choiceMode="singleChoice"
        />
MainActivity.java
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final ArrayList<String> data = new ArrayList<>();
        data.add("胡椒1");
        data.add("ターメリック1");
        data.add("コリアンダー1");
        data.add("生姜");
        data.add("にんにく");
        data.add("サフラン");

        final ArrayAdapter<String> adapter = new ArrayAdapter<String>(
                this,
                android.R.layout.simple_list_item_single_choice, data);
        ListView  list = (ListView) findViewById(R.id.list);
        list.setAdapter(adapter);

        list.setOnItemClickListener(
            new AdapterView.OnItemClickListener(){
                @Override
                public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                    CharSequence msg = ((TextView) view).getText();
                    Toast.makeText(MainActivity.this,
                            String.format("選択したのは%s", msg.toString()),
                            Toast.LENGTH_SHORT
                            ).show();

                }
            }
        );
    }

単数リスト.png

2
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
10