Android:三种Adapter的使用方法
三种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的使用方法相关推荐
- android实现10ms定时器,Android三种实现定时器的方法
方法一.使用Handler和Thread(线程)实现定时器 package com.xunfang.handerDemo; import android.app.Activity; import an ...
- 三种权重的初始化方法
总结了三种权重的初始化方法,前两种比较常见,后一种是最新的. 1. Gaussian Weights are randomly drawn from Gaussian distributions wi ...
- day01 js三种导入html的方法、js书写规范、变量的基本使用、变量提升
昨天是初学js的第一天,为什么今天才写,我觉得这样可以帮助我复习昨天的知识,加深对js的理解. 我之前学过java的,昨天转入js的学习,对js略有些体会和大家分享下,js刚入门感觉js相对于java ...
- (转)Putty server refused our key的三种原因和解决方法
(转)Putty server refused our key的三种原因和解决方法 参考文章: (1)(转)Putty server refused our key的三种原因和解决方法 (2)http ...
- tomcat中三种部署项目的方法(转)
tomcat中三种部署项目的方法 第一种方法:在tomcat中的conf目录中,在server.xml中的,<host/>节点中添加: <Context path="/h ...
- QT中三种构建菜单栏的方法
QT中三种构建菜单栏的方法 方法1 <C++ GUI programming with Qt 4, Second Edition>给出的一种方法:QMenum定义单个菜单,调用menuBa ...
- java .class 实例对象_Java产生Class类的三种实例化对象的方法
Java产生Class类的三种实例化对象的方法 1.object.getClass 2.类名.class直接根据某个具体的类来取得Class实例化对象 3.Class.forName(String c ...
- win7计算机名怎么是感叹号,Win7连接wifi信号后出现感叹号三种原因和解决方法
Win7系统电脑连接网络上网的方式有很多种,比如拨号.无线wifi.网卡等等,有时候网络也会出现故障问题.这不Win7连接wifi出现感叹号,并且提示有限的访问权限,且无法上网.有什么办法能解决,让w ...
- win7计算机名怎么是感叹号,Win7系统wifi信号后出现感叹号怎么办 Win7连接wifi后出现感叹号三种原因和解决方法...
Win7连接wifi出现感叹号,并且提示有限的访问权限,且无法上网.有什么办法能解决,让win7系统能够正常连接网络呢?针对Win7连接wifi信号后出现感叹号的问题,下面脚本之家的小编给大家讲解具体 ...
最新文章
- 算法设计与分析 贪心算法
- 单片机sleep函数的头文件_单片机学习day8—单片机IO扩展
- 设计模式C++实现(4)——单例模式
- 自动化 CICD 与灰度发布
- Laravel学习笔记之一
- 一个fork的面试题 转
- 嵌入式系统——专业英语
- 一、 Python概述、变量
- Android-Adapter-View复用机制
- 计算机组成原理完整学习笔记(一):计算机系统概论
- ldap 统一认证 java_基于LDAP的统一身份认证系统的设计与实现
- hp台式计算机u盘启动设置,惠普台式机U盘启动BIOS设置的方法教程
- 数字锁相环matlab仿真,锁相环仿真_MATLAB仿真程序代码_二阶锁相环仿真过程
- 模式分解无损连接判断——数据库考试复习
- 电脑在使用b站的时候插入耳机,耳机没有声音,只能外放,其他软件可以正常使用。
- Linux学习笔记之MySql的安装(CentOS)
- 向六种植物学习创业的真谛
- python释放变量内存_Python变量内存管理
- 犀浦某校一名计算机系大二男生,大学生恋爱的案例分析
- 秒懂小罗肥归:logit与mlogit详解