Android的编程 – 帖子 11: 在的ListView Android版
由 2 所有以前的理论确保您有超过概要, 今天我们返回到代码与所有的ListView.
ListView控件就像它的名字, 列表是一个列表, 显示查看, 即显示列表. 如果你使用的是Android手机,你会看到它无处不在, 从通讯录, 好友列表, 聊天列表,… ListView的都是.
[qads]
在这篇文章中, 我会引导你创建一个最简单的ListView, ListView控件要发布下列复杂. 首先,我们创建应用程序包括我们学到如下的课程表:
该项目创建离线空活动.
如何 1: 从创建数组列表
首先,我们的接口设计. 该接口是非常简单的ListView, 我们只是对象的ListView完成.
<?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>
当您为ListView控件设置ID,我们将看到如下界面:
在视图, 每个项目 1 运行时,ListView控件元素, 在这里,他们只是为我们描述会表现出这样的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>
这里, 卡 字符串数组 该卡可以包含一个字符串列表, 每个放置在卡链 项目.
现在是时候提上显示的ListView 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的是我们使用的最有ListView控件组件特别是当我们的名单总是变化. 下面的代码演示了如何使用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>
当您单击Add按钮, 我们添加到列表.
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();, 我们所说的每一次它的我们的数据更改,如添加的列表, 删除或修改某些元素.
赶在ListView元素的click事件
我们经常通过点击元素与列表中的元素的工作即. 例如,点击联系人之一打开看到有关此人的详细信息,… 因此,如何捕捉到的ListView元素的click事件? 你刚才 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 I, 它的元素的位置被点击中的列表,其中.
在这里本文结束. 所以你需要牢牢守住这个帖子到下线下一篇文章将更加困难.
他的后熄灭 :))
挺好.