ArrayAdapter在ListView的详解实现

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


  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值