前言:
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<String> list; 14 private ArrayAdapter<String>adapter; 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<String>(); 23 for(int i=0;i<=20;i++){ 24 list.add("数据"+i); 25 } 26 //初始化适配器 27 adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,list); 28 //把适配器设置到适配器View 29 listview.setAdapter(adapter); 30 } 31 }
效果图:
补充:
数据源除了集合外还可以有数组,另外也可以写到一个数组资源文件中:比如:在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的话这个点击事件会被长点击独占,否则相反。