layoutinflater

Android适配器之基于BaseAdapter定义AbslistView万能适配器

蹲街弑〆低调 提交于 2019-12-19 04:23:11
推荐优先本地搜索浏览 Android适配器之DataModifyHelper数据操作类的封装 定义BaseAdapter抽象基类,抽取共性部分,即实现getCount、getItem、getItemId 观察源码可知,在构造函数中实例化DataModifyHelper对象,该对象负责数据的增删改查等操作。适配器中提供getDataModifyHelper方法,供外界获得操作数据的 DataModifyHelper帮助类。 public abstract class AbsUnityBaseAdapter<T> extends BaseAdapter implements INotifyAdapterDataSetChange { private static final UtilsLog lg = UtilsLog.getLogger(AbsUnityBaseAdapter.class); private LayoutInflater layoutInflater; private IAdapterDataModifyHelper<T> IAdapterataModifyHelper; /** * 构造方法 */ protected AbsUnityBaseAdapter() { this.IAdapterataModifyHelper = new DataModifyHelper

android: 结合BottomNavigationView、ViewPager和Fragment 实现左右滑动的效果

我与影子孤独终老i 提交于 2019-12-05 14:53:01
主界面:MainActivity package com.yongdaimi.android.androidapitest; import android.os.Bundle; import androidx.appcompat.app.AppCompatActivity; import com.yongdaimi.android.androidapitest.fragment.HomePageFragment; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initFragment(); } private void initFragment() { HomePageFragment homePageFragment = HomePageFragment.newInstance(); getSupportFragmentManager() .beginTransaction() .add(R.id.fl_main_container,

android学习摘记——自定义Adapter的心得

江枫思渺然 提交于 2019-12-05 13:12:17
在ListView,GridView。。。。中经常用到适配器Adapter,但是anroid 提供的Adapter只是几种框架,如果我们有需求,还是要自己根据需求而自定义Adapter的 android提供的三种Adapter主要有ArrayAdapter,SimpleAdapter,SimpleCursorAdapter,ArraAdapter是简单的字符串适配器(很丑,因为没办法帅。。。),SimpleAdapter是可以自定义子View布局的,可以有图片(只限于本地图片,如果要用网络加载图片,请参考我之前的一篇Blog),SimpleCursorAdapter主要用于数据库,前两个的数据来源一般都是String[]或者List,后一个的数据来源一般是数据库查询得到的Cursor 而我们自定义用的最多的还是继承自SimpleAdapter,下面说一下具体用法 我还是连着上一篇Blog,想做一个显示带下载进度条的子View显示于ListView中,SimpleAdapter可以显示一般的图片,但是无法显示进度条(因为不只是要显示,还要有实时更新),所以我们的做法是继承SimpleAdapter,具体要复写的方法有4个: public int getCount() public Object getItem(int position) public long getItemId

LayoutInflater

江枫思渺然 提交于 2019-12-05 07:17:21
LayoutInflater : 一个抽象类, 作用类似于findViewById layoutInflater 用来找res/layout 下的xml文件, 并且实例化 findViewById 用来找xml文件中的控件 作用: layoutInflater 对于一个没有被载入 或者 想要动态载入的界面,都需要使用LayoutInflater.inflater来载入 对于一个已经载入的界面,可以通过Activity.findViewById方法获取其中的控件元素 获取layoutInflater: 本质都是调用Context.getSystemService() LayoutInflater inflater = getLayoutInflater(); LayoutInflater inflater = LayoutInflater.from(context); LayoutInflater inflater = LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 加载ContextImpl时会将 LayoutInflater的ServiceFetcher注入到容器中。 PhoneLayoutInflater 继承自 LayoutInflater 作用:

ListView通过CursorAdapter显示数据库内容

被刻印的时光 ゝ 提交于 2019-12-05 06:52:19
继续上一个例子,结合ListView中对SQLite进行操作。 通过CursorAdapter在ListView中的数据呈现 在上一个例子中,我们可以对SQLite中的数据库进行增删改查,将数据读到游标Cursor中,然后一一读出。在Android中可以通过CursorAdapter直接将数据映射到ListView中,如下处理: public class Chapter22Test1 extends ListActivity{ private SQLiteDatabase db = null; private Cursor cursor = null; private SimpleCursorAdapter adapter = null; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); db= (new Chapter22Db (getApplicationContext())).getWritableDatabase(); cursor =db.rawQuery("SELECT _id,Name,Weight from mytable ORDER BY Weight", null); //layout/chapter_22_test1

Android杂谈--Activity、Window、View的关系

*爱你&永不变心* 提交于 2019-12-05 05:33:41
一、首先说说View和ViewGroup吧    Android 系统中的所有UI类都是建立在View和ViewGroup这两个类的基础上的。所有View的子类成为”Widget”,所有ViewGroup的子类成为”Layout”。View和ViewGroup之间采用了组合设计模式,可以使得“部分-整体”同等对待。ViewGroup作为布局容器类的最上层,布局容器里面又可以有View和ViewGroup。 二、LayoutInflater,LayoutInflater.inflate()这两个是什么意思? LayoutInflater是一个用来实例化XML布局文件为View对象的类 LayoutInflater.infalte(R.layout.test,null)用来从指定的XML资源中填充一个新的View 三、Activity、Window、View之间的关系 而当我们运行程序的时候,有一个setContentView()方法,Activity其实不是显示视图(直观上感觉是它),实际上Activity调用了PhoneWindow的setContentView()方法,然后加载视图,将视图放到这个Window上,而Activity其实构造的时候初始化的是Window(PhoneWindow),Activity其实是个控制单元,即可视的人机交互界面。 打个比喻:

LayoutInflater的简单介绍

浪子不回头ぞ 提交于 2019-12-04 01:17:18
实际开发中LayoutInflater这个类还是非常有用的,它的 作用类似于findViewById()。 不同点是LayoutInflater是用来找res/layout/下的xml布局文件,并且实例化; 而 findViewById()是找xml布局文件下的具体widget控件(如Button、TextView等)。 具体作用: 1、对于一个没有被载入或者想要动态载入的界面,都需要使用LayoutInflater.inflate()来载入; 2、对于一个已经载入的界面,就可以使用Activiyt.findViewById()方法来获得其中的界面元素。 LayoutInflater 是一个抽象类,在文档中如下声明: public abstract class LayoutInflater extends Object 获得 LayoutInflater 实例的三种方式 1. LayoutInflater inflater = getLayoutInflater(); //调用Activity的getLayoutInflater() 2. LayoutInflater localinflater = (LayoutInflater)context.getSystemService (Context.LAYOUT_INFLATER_SERVICE); 3.

LayoutInflater布局管理器

五迷三道 提交于 2019-12-04 01:17:04
LayoutInflater作用是将layout的xml布局文件实例化为View类对象。 实现LayoutInflater的实例化共有3种方法, (1).通过SystemService获得 LayoutInflater inflater = (LayoutInflater)context.getSystemServices(Context.LAYOUT_INFLATER_SERVICES); View view = inflater.inflate(R.layout.main, null); (2).从给定的context中获得 LayoutInflater inflater = LayoutInflater.from(context); View view = inflater.inflate(R.layout.mian, null); (3). LayoutInflater inflater =getLayoutInflater();(在Activity中可以使用,实际上是View子类下window的一个函数) View layout = inflater.inflate(R.layout.main, null); 其实,这三种方式本质是相同的,从 源码 中可以看出: getLayoutInflater(): Activity的getLayoutInflater(

[Android] LayoutInflater原理分析,带你一步步深入了解View(一)

旧巷老猫 提交于 2019-12-04 01:16:23
有段时间没写博客了,感觉都有些生疏了呢。最近繁忙的工作终于告一段落,又有时间写文章了,接下来还会继续坚持每一周篇的节奏。 有不少朋友跟我反应,都希望我可以写一篇关于View的文章,讲一讲View的工作原理以及自定义View的方法。没错,承诺过的文章我是一定要兑现的,而且在View这个话题上我还准备多写几篇,尽量能将这个知识点讲得透彻一些。那么今天就从LayoutInflater开始讲起吧。 相信接触Android久一点的朋友对于LayoutInflater一定不会陌生,都会知道它主要是用于加载布局的。而刚接触Android的朋友可能对LayoutInflater不怎么熟悉,因为加载布局的任务通常都是在Activity中调用setContentView()方法来完成的。其实setContentView()方法的内部也是使用LayoutInflater来加载布局的,只不过这部分源码是internal的,不太容易查看到。那么今天我们就来把LayoutInflater的工作流程仔细地剖析一遍,也许还能解决掉某些困扰你心头多年的疑惑。 先来看一下LayoutInflater的基本用法吧,它的用法非常简单,首先需要获取到LayoutInflater的实例,有两种方法可以获取到,第一种写法如下: [java] view plain copy LayoutInflater

Android LayoutInflater的使用

百般思念 提交于 2019-12-04 01:16:11
Inflater英文意思是膨胀,在 Android 中应该是扩展的意思吧。 LayoutInflater的作用类似于 findViewById(),不同点是LayoutInflater是用来找layout文件夹下的xml布局文件,并且实例化!而 findViewById()是找具体某一个xml下的具体 widget控件(如:Button,TextView等)。 获取它的用法有3种: 方法1: 由LayoutInflater的静态函数: from ( Context context) 获取: static LayoutInflater from ( Context context); 如: LayoutInflater inflater = LayoutInflater.from(this); View view=inflater.inflate(R.layout.ID, null); //或写成: View view=LayoutInflater.from(this).inflate(R.layout.ID, null); 方法2: 由服务获取: LayoutInflater inflater = (LayoutInflater)context.getSystemService (Context.LAYOUT_INFLATER_SERVICE); 方法3: 调用Activity的