三种Adapter的使用方法

  • 1、simpleAdapter使用(3步:准备样式,准备数据,配置适配器)
    • 1).adapter方法说明
    • 2).插入一个listview ,创建 listview 样式xml文件
    • 3).准备数据源,插入数据源
    • 4).配置simpleAdapter,并配置listview
    • 5).点击事件Demo
  • 2、baseAdapter使用
    • 1).adapter方法说明
    • 2).创建adapter并继承BaseAdapter
    • 3).创建一个 listview xml 文件和样式文件
    • 4).在 MainActivity中 使用
  • 3、arrayAdapter使用
    • 1). 直接引用String-array中的数据
    • 2). 另一种引用数据方法

1、simpleAdapter使用(3步:准备样式,准备数据,配置适配器)

1).adapter方法说明

  1.前后端数据分离
  2.不能通过list更行数据,而是通过adapter实例更新数据

2).插入一个listview ,创建 listview 样式xml文件

 activity_main.xml

<ListViewandroid:id="@+id/list"android:layout_width="match_parent"android:layout_height="wrap_content"android:divider="#5E5E5E"android:dividerHeight="2dp"tools:ignore="MissingConstraints"></ListView>

 listview.xml(自定义list样式文件)

<LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><TextViewandroid:id="@+id/tv_1"android:layout_width="80dp"android:layout_height="54dp"></TextView><TextViewandroid:id="@+id/tv_2"android:layout_width="80dp"android:layout_height="54dp"></TextView><TextViewandroid:id="@+id/tv_3"android:layout_width="80dp"android:layout_height="54dp"></TextView>
</LinearLayout>
3).准备数据源,插入数据源
private String[] name  = {"a","b","c"};
private String [] des = {"aa","bb","cc"};
private int [] id={1,2,3};

 这里的key名随便取,只要后面与simpleAdapter里的String[] from 对应就好。

List<Map<String,Object>> maps = new ArrayList<Map<String,Object>>();
for (int i = 0 ; i < name.length ;i++){Map<String,Object> map = new HashMap<>();map.put("name",name[i]);map.put("des",des[i]);map.put("id",id[i]);maps.add(map);
}
4).配置simpleAdapter,并配置listview
/*
属性一:插入一个活动界面
属性二:插入要使用的数据
属性三:通过layout属性关联listView 样式
属性四:map中key值数组,key中是什么就是什么
属性五:关联listView的listView样式组件id
添加适配器*/
SimpleAdapter simpleAdapter = new SimpleAdapter(getApplicationContext(),maps,R.layout.listview,new String[]{"name","des","id"},new int[]{R.id.tv_1,R.id.tv_2,R.id.tv_3});
listView.setAdapter(simpleAdapter);
5).点击事件Demo
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {String result = adapterView.getItemAtPosition(i).toString();Toast.makeText(MainActivity.this,"你点击了"+result,Toast.LENGTH_SHORT).show();}
});

2、baseAdapter使用

1).adapter方法说明
/*
*1、适配器中数据集的数据个数
*2、获取数据集中与索引对应的数据项
*3、获取指定行ID
*4、获取每一行Item的内容
*/
@Override
public int getCount() {return list.size();} @Override
public Object getItem(int i) {return null;}@Override
public long getItemId(int i) { return 0;}@Override
public View getView(int i, View view, ViewGroup viewGroup) {}
2).创建adapter并继承BaseAdapter

  自定义adapter java 代码

package com.example.luckydraw.Util;import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;import com.example.luckydraw.R;import java.util.List;public class NumAdapter extends BaseAdapter {private List<String> list;private Context context;/*1、Context:传递当前activity 内容2、List:需要适配的数据*/public NumAdapter(Context context , List<String> list){super();this.context = context;this.list = list;}@Overridepublic int getCount() {return list.size();}@Overridepublic Object getItem(int i) {return null;}@Overridepublic long getItemId(int i) {return 0;}public void remove(int i){for(int x=i;x>0;x--){list.remove(x-1);notifyDataSetChanged();}}/**1、通过 LayoutInflater 获取 Activity*2、因为在 activity中设置了listview,*  现在通过 view = inflater.inflate(R.layout.list,null) 绑定list样式*3、创建一个 ViewHolder 内部类绑定list样式组件,并返回 view*/@Overridepublic View getView(int i, View view, ViewGroup viewGroup) {LayoutInflater inflater = LayoutInflater.from(context);ViewHolder viewHolder = null;if (view == null){view = inflater.inflate(R.layout.list,null);viewHolder = new ViewHolder();viewHolder.tv = view.findViewById(R.id.tv);view.setTag(viewHolder);}else {viewHolder = (ViewHolder) view.getTag();}viewHolder.tv.setText(list.get(i));return view;
//        TextView textView = new TextView(context);
//        textView.setText(list.get(i));
//        return textView;}class ViewHolder{public TextView tv;}
}
3).创建一个 listview xml 文件和样式文件
<LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><ListViewandroid:id="@+id/list_item"android:layout_width="match_parent"android:layout_height="282dp"></ListView></LinearLayout>

 样式文件 list.xml

<LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"android:layout_marginTop="4dp"android:layout_marginLeft="12dp"><TextViewandroid:id="@+id/tv"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="40dp"android:text="啦啦啦"></TextView>
</LinearLayout>
4).在 MainActivity中 使用

  使用不难,

private NumAdapter adapter;
private List list = new ArrayList<>();
adapter = new NumAdapter(getApplicationContext(), list);
listItem.setAdapter(adapter);

  点击事件,

@OnClick(R.id.bt_draw)
public void onBtDrawClicked() {if (edNum.getText().toString().trim().length() == 0 || etNum2.getText().toString().trim().length() == 0) {ToastUtile.showText(this, "请输入范围");} else if ((Integer.parseInt(edNum.getText().toString()) < (Integer.parseInt(etNum2.getText().toString())))) {ToastUtile.showText(this, "范围数据出错");return;} else {int i = Integer.parseInt(edNum.getText().toString());int j = Integer.parseInt(etNum2.getText().toString());int x;Random random = new Random();while ((x = random.nextInt(i) + 1) < j) {x = random.nextInt(i) + 1;}String s = String.valueOf(x);s = "" + n++ + "、" + " 恭喜抽中了:" + s + "号同学";if (checkbox.isChecked()) {ToastUtile.showText(this, s);}list.add(s);adapter.notifyDataSetChanged();}
}@OnClick(R.id.bt_clear)
public void onBtClearClicked() {adapter.remove(list.size());n = 1;
}

3、arrayAdapter使用

1). 直接引用String-array中的数据

  xml文件

<ListViewandroid:id="@+id/list"android:layout_width="match_parent"android:layout_height="wrap_content"android:divider="#5E5E5E"android:dividerHeight="2dp"android:entries="@array/data"  tools:ignore="MissingConstraints">//entries 属性引用数据</ListView>

  java代码块

public class MainActivity extends AppCompatActivity {private ListView listView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ButterKnife.bind(this);listView = findViewById(R.id.list);listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {String result = adapterView.getItemAtPosition(i).toString();//获取选择项的值Toast.makeText(MainActivity.this,"你点击了"+result,Toast.LENGTH_SHORT).show();}});}
}
2). 另一种引用数据方法

  xml文件:比上面少了一个entries 属性引用外部数据

<ListViewandroid:id="@+id/list"android:layout_width="match_parent"android:layout_height="wrap_content"android:divider="#5E5E5E"android:dividerHeight="2dp"tools:ignore="MissingConstraints"></ListView>

  java文件(核心就三步:绑定组件、准备数据和适配器、添加适配置)

public class MainActivity extends AppCompatActivity {private ListView listView;private ArrayAdapter<String> arrayAdapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ButterKnife.bind(this);//1、绑定listviewlistView = findViewById(R.id.list);//2、准备数据源dataString data[] = {"1","2","3","4","5","6","7","8"};//3、准备arrayAdapter,关联activity,加载布局文件,关系数据dataarrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,data);//4、listview添加适配器listView.setAdapter(arrayAdapter);//5、自由处理listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {String result = adapterView.getItemAtPosition(i).toString();//获取选择项的值Toast.makeText(MainActivity.this,"您点击了"+result,Toast.LENGTH_SHORT).show();}});}
}

Android:三种Adapter的使用方法相关推荐

  1. android实现10ms定时器,Android三种实现定时器的方法

    方法一.使用Handler和Thread(线程)实现定时器 package com.xunfang.handerDemo; import android.app.Activity; import an ...

  2. 三种权重的初始化方法

    总结了三种权重的初始化方法,前两种比较常见,后一种是最新的. 1. Gaussian Weights are randomly drawn from Gaussian distributions wi ...

  3. day01 js三种导入html的方法、js书写规范、变量的基本使用、变量提升

    昨天是初学js的第一天,为什么今天才写,我觉得这样可以帮助我复习昨天的知识,加深对js的理解. 我之前学过java的,昨天转入js的学习,对js略有些体会和大家分享下,js刚入门感觉js相对于java ...

  4. (转)Putty server refused our key的三种原因和解决方法

    (转)Putty server refused our key的三种原因和解决方法 参考文章: (1)(转)Putty server refused our key的三种原因和解决方法 (2)http ...

  5. tomcat中三种部署项目的方法(转)

    tomcat中三种部署项目的方法 第一种方法:在tomcat中的conf目录中,在server.xml中的,<host/>节点中添加:  <Context path="/h ...

  6. QT中三种构建菜单栏的方法

    QT中三种构建菜单栏的方法 方法1 <C++ GUI programming with Qt 4, Second Edition>给出的一种方法:QMenum定义单个菜单,调用menuBa ...

  7. java .class 实例对象_Java产生Class类的三种实例化对象的方法

    Java产生Class类的三种实例化对象的方法 1.object.getClass 2.类名.class直接根据某个具体的类来取得Class实例化对象 3.Class.forName(String c ...

  8. win7计算机名怎么是感叹号,Win7连接wifi信号后出现感叹号三种原因和解决方法

    Win7系统电脑连接网络上网的方式有很多种,比如拨号.无线wifi.网卡等等,有时候网络也会出现故障问题.这不Win7连接wifi出现感叹号,并且提示有限的访问权限,且无法上网.有什么办法能解决,让w ...

  9. win7计算机名怎么是感叹号,Win7系统wifi信号后出现感叹号怎么办 Win7连接wifi后出现感叹号三种原因和解决方法...

    Win7连接wifi出现感叹号,并且提示有限的访问权限,且无法上网.有什么办法能解决,让win7系统能够正常连接网络呢?针对Win7连接wifi信号后出现感叹号的问题,下面脚本之家的小编给大家讲解具体 ...

最新文章

  1. 算法设计与分析 贪心算法
  2. 单片机sleep函数的头文件_单片机学习day8—单片机IO扩展
  3. 设计模式C++实现(4)——单例模式
  4. 自动化 CICD 与灰度发布
  5. Laravel学习笔记之一
  6. 一个fork的面试题 转
  7. 嵌入式系统——专业英语
  8. 一、 Python概述、变量
  9. Android-Adapter-View复用机制
  10. 计算机组成原理完整学习笔记(一):计算机系统概论
  11. ldap 统一认证 java_基于LDAP的统一身份认证系统的设计与实现
  12. hp台式计算机u盘启动设置,惠普台式机U盘启动BIOS设置的方法教程
  13. 数字锁相环matlab仿真,锁相环仿真_MATLAB仿真程序代码_二阶锁相环仿真过程
  14. 模式分解无损连接判断——数据库考试复习
  15. 电脑在使用b站的时候插入耳机,耳机没有声音,只能外放,其他软件可以正常使用。
  16. Linux学习笔记之MySql的安装(CentOS)
  17. 向六种植物学习创业的真谛
  18. python释放变量内存_Python变量内存管理
  19. 犀浦某校一名计算机系大二男生,大学生恋爱的案例分析
  20. 秒懂小罗肥归:logit与mlogit详解

热门文章

  1. 创业思维分享优点(创业方法创业思维)
  2. 目前市面上可以赚钱的路由器分析与总结
  3. 基于51单片机的LCD1602显示温湿度
  4. 正弦波产生电路_文氏桥振荡
  5. pytorch3d学习之pytorch3d.ops
  6. Key Points about ActiveSupport::Concern
  7. 静态时序分析(STA)附秋招面试提问
  8. 114号和116号元素诞生记:验证历时4年多
  9. mysql函数LOCATE、POSITION和INSTR
  10. vue 重复点击菜单,路由重复报错