Adapter之ArrayAdapter以及监听器设置

前言:

ArrayAdapter:支持泛型操作,最简单的一个Adapter,只能展现一行文字~,我的学习就是通过这个最简单的适配器开始

正文:

完成这个ArrayAdapter需要三步:1.初始化数据,2.初始化Adapter,3.初始化AdapterView下面通过代码来演示

xml文件

1 <ListView
2         android:layout_width="match_parent"
3         android:layout_height="match_parent"
4         android:id="@+id/listview">
5     ListView>

Java中文件

 1 package com.example.administrator.testadapter;
 2 
 3 import android.support.v7.app.AppCompatActivity;
 4 import android.os.Bundle;
 5 import android.widget.ArrayAdapter;
 6 import android.widget.ListView;
 7 
 8 import java.util.ArrayList;
 9 import java.util.List;
10 
11 public class MainActivity extends AppCompatActivity {
12     private ListView listview;
13     private List list;
14     private ArrayAdapteradapter;
15     @Override
16     protected void onCreate(Bundle savedInstanceState) {
17         super.onCreate(savedInstanceState);
18         setContentView(R.layout.activity_main);
19         //初始化适配器View
20         listview=(ListView)findViewById(R.id.listview);
21         //初始化数据源
22         list =new ArrayList();
23         for(int i=0;i<=20;i++){
24             list.add("数据"+i);
25         }
26         //初始化适配器
27         adapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1,list);
28         //把适配器设置到适配器View
29         listview.setAdapter(adapter);
30     }
31 }

效果图:

Adapter之ArrayAdapter以及监听器设置_第1张图片

补充:

数据源除了集合外还可以有数组,另外也可以写到一个数组资源文件中:比如:在res\valuse下创建一个数组资源的xml文件:arrays.xml

1 xml version="1.0" encoding="utf-8"?>  
2 <resources>  
3     <string-array name="myarray">  
4     <item>提莫item>  
5     <item>奥巴马item>  
6     <item>盖伦item>  
7     string-array>      
8 resources>

27行代码中,第二个参数(android.R.layout.simple_list_item_1)是系统提供的一个模板,统给我们提供好的一些ListView模板,有下面几种:

simple_list_item_1 : 单独一行的文本框

simple_list_item_2 : 两个文本框组成

simple_list_item_checked : 每项都是由一个已选中的列表项

simple_list_item_multiple_choice : 都带有一个复选框

simple_list_item_single_choice : 都带有一个单选钮  

另外自己写的布局文件也是可以,代码如下:

1 xml version="1.0" encoding="utf-8"?>
2 <TextView xmlns:android="http://schemas.android.com/apk/res/android"
3      android:layout_width="match_parent"
4     android:layout_height="match_parent"
5     android:gravity="center"
6     android:text="显示内容"
7     android:textSize="20sp"
8     android:padding="8dp"
9    />

这样会让单行文字居中显示

下面给ListView添加监听器

点击事件

1  listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
2             @Override
3             public void onItemClick(AdapterView parent, View view, int position, long id) {
4                 Toast.makeText(MainActivity.this, "你点击的item是第" + position + "个", Toast.LENGTH_SHORT).show();
5             }
6         });

功能就是在你点击ListView时会Toast一下

其中onItemClick方法中的参数:

parent:适配器设置到adapterView对象,这里表示ListView

view:适配器item对应的view

position:缩影位置

id:在ListView中的item的行id

长按点击事件

1 listview.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
2             @Override
3             public boolean onItemLongClick(AdapterView parent, View view, int position, long id) {
4                 list.remove(position);
5                 adapter.notifyDataSetChanged();
6                 return true;
7             }
8         });

如果返回值为true的话这个点击事件会被长点击独占,否则相反。

你可能感兴趣的:(Adapter之ArrayAdapter以及监听器设置)