ArrayAdapter在ListView的详解实现

ArrayAdapter在ListView的详解实现


1.   适配器的作用是数据和视图之间的桥梁

2.   要显示一个数组,我们就用ArrayAdapter,数组适配器,数据的数据类型<>是String类型的,数据的数据类型还可以是其他的包括对象类。

3.    ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>( 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<String> 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


猜你喜欢

转载自blog.csdn.net/e_wsq/article/details/80447172