Androidのプログラミング – 投稿 11: アンドロイドでのListView

によって 2 あなたが概要を超える持っていることを確認すべての以前の理論, 今日はすべてのListViewを使用してコードに戻ります.
その名のようなリストビュー, リストはリストであります, ビューが表示されます。, 表示リストすなわち. あなたは、Androidの携帯電話を使用している場合、あなたはどこにでもそれが表示されます, 連絡先から, フレンドリスト, チャットのリスト,… リストビューは両方とも.

[qads]

この記事で, 私は最も簡単なリストビューを作成するためにご案内します, 以下の複合体を投稿しようとしてリストビュー. まず、アプリは、次のように我々が学んだ教訓のリストを含む作成します:

アンドロイド-リストビュー-3

あなたは空のアクティビティとオフラインで作成したプロジェクト.

方法 1: アレイのリストを作成します。

まず、インターフェイスを設計します. インターフェイスは非常に単純なリストビューであります, 私たちは、オブジェクトのリストビューが終了する必要があり.

<?xml version="1.0" encoding="utf-8"?>
<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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.nguyenvanquan7826.tut11listview.MainActivity">

    <ListView
        android:id="@+id/lvTUT"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</RelativeLayout>

リストビューのIDを設定すると、我々は次のインターフェイスを見ていきます:
アンドロイド-リストビュー-1

上のビューで, 各項目は、 1 ListViewの要素実行, ここで彼らは、そのようなリストビューが表示されます、その私たちのために記述します, しかし、実際には、我々はリストのオフラインの要素に関するデータを持っていません.

次に、あなたはファイルのres /値/アウトを開き、次のstring.xmlを指定を追加します。:

<resources>
    <string name="app_name">TUT11ListView</string>

    <string-array name="tut_android">
        <item>Bài 1: Hello World</item>
        <item>Bài 2: TextView, EditText, Button</item>
        <item>Bài 3: Bắt sự kiện click Button</item>
        <item>Bài 4: Thiết kế giao diện với RelativeLayout</item>
        <item>Bài 5: Thiết kế giao diện với LinearLayoout</item>
        <item>Bài 6: Thực hành xây dựng ứng dụng Calculator</item>
        <item>Bài 7: Toast, CheckBox, RadioButton, Dialog</item>
        <item>Bài 8: Intent – Chuyển đổi giữa các màn hình</item>
        <item>Bài 9: Cấu trúc Project</item>
        <item>Bài 10: Vòng đời Activity</item>
    </string-array>
</resources>

ここにある, カード 文字列の配列 カードは文字列のリストが含まれていることができます, 各カード鎖中に入れ アイテム.

今、リストビューに表示されたJavaコードのデータを置くための時間があります.

package com.nguyenvanquan7826.tut11listview;

import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MainActivity extends AppCompatActivity {

    private ListView lvTut;
    private String[] listData;
    private ArrayAdapter<String> adapter;

    private Context context;

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

        context = this;

        connectView();
        loadData();
    }

    private void connectView() {
        lvTut = (ListView) findViewById(R.id.lvTUT);
    }

    private void loadData() {
        // get data (string array) from xml file
        listData = context.getResources().getStringArray(R.array.tut_android);

        // create adapter with listData and layout item
        adapter = new ArrayAdapter<>(context, android.R.layout.simple_list_item_1, listData);

        lvTut.setAdapter(adapter);
    }
}

上記のコードで, あなたが行作成アダプターに気付きます, 我々は持っています 3 引数はコンテキストです (コンテキスト), レイアウト, そして、listDataプロパティ. レイアウトは、です android.R.layout.simple_list_item_1 ファイル・システム・利用可能なディスプレイにあります 1 テキストと我々は単純なリストのためにそれを使用しました.

xmlファイルの文字列配列から取られたラインは、私たちに戻ります 文字列[], そのようにXMLファイルに指定した文字列に加えて、, 我々はここで直接文字列配列を割り当てることができ、私たちは次のように書くことができます:

private void loadData() {
    listData = new String[] {
            "Bài 1: Hello World",
            "Bài 2: TextView, EditText, Button",
            "Bài 3: Bắt sự kiện click Button"
    };

    // create adapter with listData and layout item
    adapter = new ArrayAdapter<>(context, android.R.layout.simple_list_item_1, listData);

    lvTut.setAdapter(adapter);
}

方法 2: ArrayListのからプレイリストを作成します。

ArrayListのは、我々のリストは常に変化している場合は特に、リストビューとのほとんどを使用コンポーネントであります. 次のコードは、ArrayListの使用方法を示し.

package com.nguyenvanquan7826.tut11listview;

import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

    private ListView lvTut;
    private ArrayList<String> listData;
    private ArrayAdapter<String> adapter;

    private Context context;

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

        context = this;

        connectView();
        loadData();
    }

    private void connectView() {
        lvTut = (ListView) findViewById(R.id.lvTUT);
    }

    private void loadData() {

        listData = new ArrayList<>();
        listData.add("Bài 1: Hello World");
        listData.add("Bài 2: TextView, EditText, Button");
        listData.add("Bài 3: Bắt sự kiện click Button");
        listData.add("Bài 4: Thiết kế giao diện với RelativeLayout");
        listData.add("Bài 5: Thiết kế giao diện với LinearLayoout");

        // create adapter with listData and layout item
        adapter = new ArrayAdapter<>(context, android.R.layout.simple_list_item_1, listData);

        lvTut.setAdapter(adapter);
    }

}

あなたが得る結果は、すべての製配列とは異なる場合がありません. しかし、ここで私はリストから要素を追加または削除するように柔軟性を言及したいと思います. これを実現するには、後でインターフェイスの編集を続行します.

アンドロイド・リストビュー・追加項目

<?xml version="1.0" encoding="utf-8"?>
<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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.nguyenvanquan7826.tut11listview.MainActivity">

    <EditText
        android:id="@+id/editTut"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@+id/btnAdd"
        android:hint="Enter tut title" />

    <Button
        android:id="@+id/btnAdd"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:text="Add" />


    <ListView
        android:id="@+id/lvTUT"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/btnAdd" />
</RelativeLayout>

[追加]ボタンをクリックすると、, 我々はリストに追加します.

package com.nguyenvanquan7826.tut11listview;

import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

    private ListView lvTut;
    private ArrayList<String> listData;
    private ArrayAdapter<String> adapter;
    
    private EditText editTut;

    private Context context;

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

        context = this;

        connectView();
        loadData();
    }

    private void connectView() {
        lvTut = (ListView) findViewById(R.id.lvTUT);
        editTut = (EditText) findViewById(R.id.editTut);
        findViewById(R.id.btnAdd).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                addTut();
            }
        });
    }

    private void loadData() {

        listData = new ArrayList<>();
        listData.add("Bài 1: Hello World");
        listData.add("Bài 2: TextView, EditText, Button");
        listData.add("Bài 3: Bắt sự kiện click Button");
        listData.add("Bài 4: Thiết kế giao diện với RelativeLayout");
        listData.add("Bài 5: Thiết kế giao diện với LinearLayoout");

        // create adapter with listData and layout item
        adapter = new ArrayAdapter<>(context, android.R.layout.simple_list_item_1, listData);

        lvTut.setAdapter(adapter);
    }
    
    private void addTut(){
        String tut = editTut.getText().toString().trim();
        
        if(TextUtils.isEmpty(tut)) {
            Toast.makeText(context, "Please enter tut title", Toast.LENGTH_SHORT).show();
            return;
        }
        
        listData.add(tut);
        
        // update data to show on listview
        adapter.notifyDataSetChanged();
        
    }

}

上記のコードでは、あなたの注意を指示します adapter.notifyDataSetChanged();, 我々は、このような追加など、私たちのデータ変更のリストたびにそれを呼び出します, 特定の要素を削除または修正.

リストビュー内の要素にイベントのクリックを取得

私たちはしばしば、その要素をクリックして、リスト内の要素と連携します. 例えば、その人物の詳細を表示するために開く接点の1つをクリック,… それでは、どのリストビュー要素のクリックイベントをキャッチします? あなただけの setOnItemClickListener ListViewコントロールのために終了します.

lvTut.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
        Toast.makeText(context, listData.get(i), Toast.LENGTH_SHORT).show();
        // do something
    }
});

関数で onItemClick あなたは、変数を参照してくださいか int型の私, それは、要素の位置は、私たちのリストでクリックされています.

ここにこの記事は終了します. 次の記事では、オフラインにしっかりとこのポストを保持する必要があるので、より困難になります.