ArrayAdapter在ListView的详解实现

ArrayAdapter在ListView的详解实现
【ArrayAdapter在ListView的详解实现】


1.适配器的作用是数据和视图之间的桥梁 2.要显示一个数组,我们就用ArrayAdapter,数组适配器,数据的数据类型<>是String类型的,数据的数据类型还可以是其他的包括对象类。
3.ArrayAdapter arrayAdapter = new ArrayAdapter( ArrayListDemo.this, android.R.layout.simple_list_item_1, adapterData);
这段代码是创建一个数组适配器的代码,里面有三个参数,第一个参数是上下文,就是当前的Activity, 第二个参数是android sdk中自己内置的一个布局,它里面只有一个TextView,这个参数是表明我们数组中每一条数据的布局是这个view,就是将每一条数据都显示在这个view上面;第三个参数就是我们要显示的数据。listView会根据这三个参数,遍历adapterData里面的每一条数据,读出一条,显示到第二个参数对应的布局中,这样就形成了我们看到的listView.
------------------------------ ---------------------------------------------------------------------------------------------------------
Android 中提供了很多适配器的实现类,其中我认为最好用的就是ArrayAdapter。它可以通过泛型来指定要适配的数据类型,然后在构造函数中把要适配的数据传入即可。ArrayAdapter有多个构造函数的重载,你应该根据实际情况选择最合适的一种。这里由于我们提供的数据都是字符串,因此将ArrayAdapter 的泛型指定为String,然后在ArrayAdapter 的构造函数中依次传入当前上下文、ListView 子项布局的id,以及要适配的数据。注意我们使用了android.R.layout.simple_list_item_1 作为ListView 子项布局的id,这是一个Android 内置的布局文件,里面只有一个TextView,可用于简单地显示一段文本。



adapter在安卓中分为ArrayAdapter和baseAdapter;其中简单的ArrayAdapter主要用于简单的文本字符串的实现,,如ListView,SpinnerView

记录一下ListView的具体实现
首先是我们必须清楚实现的步骤:
1、创建我们所需要的承载视图:Listview
2、创建数据源List
3、创建适配器并绑定数据源adapter
3、将适配器绑定在视图承载容器上
4、为ListView 设置点击事件
具体代码如下:

package com.example.shanshui.arraylisttest; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.Toast; import java.util.ArrayList; /* * 适配器采用MVC模式:所谓的MVC,就是M:model; V:View; C:Controller * MVC模式的使用实现了数据与前端的分离,数据源与试图互不干扰 * * */ /*创建视图适配器的一般步骤: 1、创建承载数据的视图容器 2、创建数据源 3、创建适配器并把数据绑定在适配器 4、将适配器绑定在视图容器 * */ public class MainActivity extends AppCompatActivity { private ListView mlv; private ArrayList list; private ArrayAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mlv = (ListView) findViewById(R.id.mlv); //构造数据源 list = new ArrayList<>(); for (int i = 0; i < 50; i++) { list.add("数据源" + i); } //为适配器添加数据源 adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, list); //为listView的容器添加适配器 mlv.setAdapter(adapter); //设置点击事件mlv mlv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { Toast.makeText(MainActivity.this, "你点击的是" + position, Toast.LENGTH_SHORT).show(); } }); //实现长按监听 mlv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { @Override /* * 点击事件的参数 * 1、parent指定的是适配器AdqpterView绑定的视图容器,也就是Listview; * 2、View:Item的适配器对象的view * 3、position:Item在数据数组的对应下标所以 * id:Item所在的行号 * */ public boolean onItemLongClick(AdapterView parent, View view, int position, long id) {list.remove(position); //监听数据源的改变 adapter.notifyDataSetChanged(); return true; } }); } }





/* * 适配器采用MVC模式:所谓的MVC,就是M:model; V:View; C:Controller * MVC模式的使用实现了数据与前端的分离,数据源与试图互不干扰 * * */ /*创建视图适配器的一般步骤: 1、创建承载数据的视图容器 2、创建数据源 3、创建适配器并把数据绑定在适配器 4、将适配器绑定在视图容器 * */


点击事件的参数


/* * 点击事件的参数 * 1、parent指定的是适配器AdqpterView绑定的视图容器,也就是Listview; * 2、View:Item的适配器对象的view * 3、position:Item在数据数组的对应下标所以 * id:Item所在的行号 * */



长按事件中我们设置长按删除当前Item

之后需要对数据刷新显示:使用过NotifyDataSetChanged

    推荐阅读