viewholder

家庭小账本——适配器的编写与测试

寵の児 提交于 2020-02-10 20:05:32
    今天开始根据网络教学进行家庭小账本的编写,然后进行测试,这是第一次编写较为完善全面的Android的程序,而且作为Android的初学者,自我感觉这次编写非常的慢,有许多的方面都没有比较满意的进行,而且这次综合的知识的也不少。     先进行界面的设计, 1 <?xml version="1.0" encoding="utf-8"?> 2 <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:app="http://schemas.android.com/apk/res-auto" 4 xmlns:tools="http://schemas.android.com/tools" 5 android:layout_width="match_parent" 6 android:layout_height="match_parent" 7 app:layout_behavior="@string/appbar_scrolling_view_behavior" 8 tools:context=".MainActivity" 9 tools:showIn="@layout/activity_main">

进度5_家庭记账本App_数据库的添加和查看

我与影子孤独终老i 提交于 2020-02-10 19:26:11
今天继续在昨天的基础上完成了家庭记账单的在数据库中的添加和查看功能 在之前的基础上舍弃了Fragment,重新在百度上找到了学习资料,并且自我完成了实践 首先在之前的基础上创建CostListAdapter.java,并根据提示创建四个方法: package com.example.familybook; 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 java.util.List; public class CostListAdapter extends BaseAdapter { private List<CostBean> mList; private Context mContext; private LayoutInflater mLayoutInflater; public CostListAdapter(Context context,List<CostBean>list){ mContext=context; mList

Android必学之数据适配器BaseAdapter

戏子无情 提交于 2020-02-10 03:41:12
.什么是数据适配器? 下图展示了数据源、适配器、ListView等数据展示控件之间的关系。我们知道,数据源是各种各样的,而ListView所展示数据的格式则是有一定的要求的。数据适配器正是建立了数据源与ListView之间的适配关系,将数据源转换为ListView能够显示的数据格式,从而将数据的来源与数据的显示进行解耦,降低程序的耦合性。这也体现了Android的适配器模式的使用。对于ListView、GridView等数据展示控件有多种数据适配器,本文讲解最通用的数据适配器——BaseAdapter。 .ListView的显示与缓存机制 我们知道,ListView、GridView等控件可以展示大量的数据信息。假如下图中的ListView可以展示100条信息,但是屏幕的尺寸是有限的,一屏幕只能显示下图中的7条。当向上滑动ListView的时候,item1被滑出了屏幕区域,那么系统就会将item1回收到Recycler中,即View缓冲池中,而将要显示的item8则会从缓存池中取出布局文件,并重新设置好item8需要显示的数据,并放入需要显示的位置。这就是ListView的缓冲机制,总结起来就是一句话:需要时才显示,显示完就被会收到缓存。ListView,GridView等数据显示控件通过这种缓存机制可以极大的节省系统资源。 .BaseAdapter

Android ListView使用BaseAdapter与ListView的优化 (转至 http://www.open-open.com/lib/view/open1339485728006.html)

走远了吗. 提交于 2020-02-10 02:54:29
在 ListView 的使用中,有时候还需要在里面加入按钮等控件,实现单独的操作。也就是说,这个 ListView 不再只是展示数据,也不仅仅是这一行要来处理用户的操作,而是里面的控件要获得用户的焦点。读者可以试试用 SimpleAdapter 添加一个按钮到 ListView 的条目中,会发现可以添加,但是却无法获得焦点,点击操作被 ListView 的 Item 所覆盖。这时候最方便的方法就是使用灵活的适配器 BaseAdapter 了。 ▲ 图 4-35 BaseAdapter 中的方法 使用 BaseAdapter 必须写一个类继承它,同时 BaseAdapter 是一个抽象类,继承它必须实现它的方法。 BaseAdapter 的灵活性就在于它要重写很多方法,看一下有哪些方法,如图 4-35 所示为继承自 BaseAdapter 的 SpeechListAdapter 所实现的方法,其中最重要的即为 getView() 方法。这些方法都有什么作用呢?我们通过分析 ListView 的原理来为读者解答。 当系统开始绘制 ListView 的时候,首先调用 getCount() 方法。得到它的返回值,即 ListView 的长度。然后系统调用 getView() 方法,根据这个长度逐一绘制 ListView 的每一行。也就是说,如果让 getCount() 返回 1

Android ListView使用BaseAdapter与ListView的优化

跟風遠走 提交于 2020-02-10 02:15:11
在ListView的使用中,有时候还需要在里面加入按钮等控件,实现单独的操作。也就是说,这个ListView不再只是展示数据,也不仅仅是这一行要来处理用户的操作,而是里面的控件要获得用户的焦点。读者可以试试用SimpleAdapter添加一个按钮到ListView的条目中,会发现可以添加,但是却无法获得焦点,点击操作被ListView的Item所覆盖。这时候最方便的方法就是使用灵活的适配器BaseAdapter了。 ▲图4-35 BaseAdapter中的方法 使用BaseAdapter必须写一个类继承它,同时BaseAdapter是一个抽象类,继承它必须实现它的方法。BaseAdapter的灵活性就在于它要重写很多方法,看一下有哪些方法,如图4-35所示为继承自BaseAdapter的SpeechListAdapter所实现的方法,其中最重要的即为getView()方法。这些方法都有什么作用呢?我们通过分析ListView的原理来为读者解答。 当系统开始绘制ListView的时候,首先调用getCount()方法。得到它的返回值,即ListView的长度。然后系统调用getView()方法,根据这个长度逐一绘制ListView的每一行。也就是说,如果让getCount()返回1,那么只显示一行。而getItem()和getItemId(

Android ListView 适配器(Adapter)优化

假如想象 提交于 2020-02-10 02:01:12
本文也是转载的,以留着备用。 Adapter 的作用就是 ListView 界面与数据之间的桥梁,当列表里的每一项显示到页面时,都会调用Adapter的getView方法返回一个View。 优化的思路两种: 1. View的重用 View的每次创建是比较耗时的,因此 对于 getview方法传入的 convertView应充分利用 != null的判断 2. ViewHolder的应用 View的 findViewById ()方法也是比较耗时的,因此需要考虑只调用一次,之后就用View.getTag()方法来获得ViewHolder对象 下面是优化后的代码供参考: 1 public class MyAdapter extends BaseAdapter { 2 private Context mContext; 3 private LayoutInflater mInflater; 4 5 public MyAdapter(Context context) { 6 this.mContext = context; 7 mInflater = LayoutInflater.from(mContext); 8 } 9 10 public int getCount() {11 12 return mmsList.size();13 }14 15 public Object

[Android]ListView控件之Adapter性能优化

我的梦境 提交于 2020-02-10 01:59:43
Google在Google I/O大会上,提到Android在UI优化方面可以从以下五个方面入手: Adapter优化 背景和图片优化 绘图优化 视图和布局优化 内存分配优化 1.Adapter优化 在ListView中,我们可以自定义Adapter,继承BaseAdapter,再重写相应的方法, 但需要特别注意,ListView的每一项视图加载都要经过getView这个方法,所以优化adapter 也就在此方法。 方案一: 1 @Override 2 public View getView(int position, View convertView, ViewGroup parent) { 3 // TODO Auto-generated method stub 4 5 convertView = mInflater.inflate(R.layout.img_listview_item, null); 6 holder.imgIv = (ImageView)convertView.findViewById(R.id.imageView1); 7 holder.itemTv = (TextView)convertView.findViewById(R.id.textView1); 8 holder.imgIv.setImageResource(R.drawable.icon);

Android开发之BaseAdapter的学习

前提是你 提交于 2020-02-08 18:54:51
一、目标 学习掌握数据适配器BaseAdaptor的使用,并且练习学会BaseAdaptor的三种使用方式。 二、具体内容 ViewHolder优化BaseAdaptor的方式: (1)创建Bean对象封装数据 (2)在构造方法中初始化用于映射的数据List (3)创建内部ViewHolder类,创建布局映射关系 (4)判断convertView是否为空,为空则创建并设置tag关联viewHolder,不为空则通过tag来取出viewHolder (5)给viewHolder中的控件设置数据 三、源代码 package com.example.baseadapter; import android.os.Bundle; import com.google.android.material.floatingactionbutton.FloatingActionButton; import com.google.android.material.snackbar.Snackbar; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; import android.view.View; import android.view.Menu; import

RecyclerView拖拽的实现及一些特殊需求

て烟熏妆下的殇ゞ 提交于 2020-02-07 11:03:24
1.创建ItemTouchHelper对象并绑定 首先说一下关键点,在RecyclerView中实现拖拽排序时非常简单地,只需要个给RecyclerView添加一个ItemTouchHelper就可以实现,具体实现如下: ItemTouchHelper itemTouchHelp = new ItemTouchHelper(new CityRecycleCallBack(adapter)); itemTouchHelp.attachToRecyclerView(recyclerView); 2. ItemTouchHelper.Callback回调实现 这个回调中有许多方法,通多对方法的实现就能最终实现拖拽效果 2.1 getMovementFlags 在这里主要设置拖拽的方向即是否可拖拽,根据布局的不同有不同的方法,如列表只有上下拖拽,网格只有上下左右。具体实现如下: public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) { if (recyclerView.getLayoutManager() instanceof GridLayoutManager) { final int dragFlags = ItemTouchHelper.UP |

RecyclerView使用解析

泄露秘密 提交于 2020-02-04 22:18:48
0.RecyclerView的特性 1.LayoutManager类 2.Adapter类 3.ViewHolder类 4.配置不同的LayoutManager 5.为item配置点击事件 6.RecyclerView中插入和删除数据 . . . 0.RecyclerView的特性: 灵活可以配置 可以自定义并且可以重复使用的Item 高度解耦 . . 1.LayoutManager类: LayoutManager类是一个抽象类,安卓给我们提供了三个它的实现类供我们使用: 1.1LinearLayoutManager: 线性布局管理器。 LinearLayoutManager给我们提供了一些API让我们可以对展示效果进行更丰富的操作。 1.2GridLayoutManager: 网格布局管理器 我们可以在它的构造方法中传入它的列数。 1.3StaggeredGridLayoutManager: 瀑布流布局管理器 宽度相同高度不同的ItemView。 确定RecyclerView的样式,是线性的,网格的还是瀑布流的。 2.Adapter类 用来处理视图和数据之间的关系,一般情况下和 ViewHolder 搭配使用。 每个Adapter都必须继承自RecyclerView.Adapter.并实现三个方法: **onCreateViewHolder:**创建ViewHolder并返回 /