BaseAdapter教程(1) 最简单地使用BaseAdapter
Adapter就是适配器,而设计模式里也有Adapter Pattern。
而BaseAdapter就是设计模式里的思维,把一些不相关的东西放进去,经过适配器,最终都会出产同一样的东西。
就像BaseAdapter,就算放不同的XML和Data进去,最终出现都是ListView的Cell。
1. BaseAdaper代码,完全没有特别的地方,不解述了。
package com.paradise.electronic.eparadise2.adapter; import android.content.Context;
import android.graphics.Bitmap;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView; import com.paradise.electronic.eparadise2.R;
import com.paradise.electronic.eparadise2.dto.PostDTO; import java.util.List; /**
* Created by Administrator on 17-11-12.
*/
public class PostAdapter extends BaseAdapter { // data
private Context context;
private LayoutInflater inflter;
private List<PostDTO> postDTOs;
private List<Bitmap> bitMaps; // UI
private TextView tvPostTitle;
private TextView tvPostDate;
private ImageView imgAbstractImg; public PostAdapter(Context context, List<PostDTO> postDTOs, List<Bitmap> bitMaps) {
super();
this.postDTOs = postDTOs;
this.bitMaps = bitMaps;
this.context = context;
inflter = (LayoutInflater.from(context));
} @Override
public int getCount() {
return postDTOs.size();
} @Override
public Object getItem(int position) {
return null;
} @Override
public long getItemId(int position) {
return position;
} @Override
public View getView(int position, View convertView, ViewGroup parent) { // 初始化convertView
convertView = inflter.inflate(R.layout.lv_home_post, null); // 初始化UI
tvPostTitle = (TextView) convertView.findViewById(R.id.tvPostTitle);
tvPostDate = (TextView) convertView.findViewById(R.id.tvPostDate);
imgAbstractImg = (ImageView) convertView.findViewById(R.id.imgAbstractImg); // Set date into tv
tvPostTitle.setText(postDTOs.get(position).getTitle());
tvPostDate.setText(postDTOs.get(position).getDate());
imgAbstractImg.setImageBitmap(bitMaps.get(position)); return convertView;
} }
2. 初始化BaseAdaper,然后让ListView调用BaseAdaper就可以。
private String strJsPost;
private void initData() {
// set view unclickable first
rlFragmentHome.setClickable(false); // Network thread
new Thread(new Runnable() {
@Override
public void run() {
// get <JSON>post from network
strJsPost = okhttp.getResponse(Configuration.getHotPost);
postHotDTOs = gsonTools.getPost(strJsPost); // get post image URL from network, than convect the file to bitmap
bitHotMaps = new ArrayList<Bitmap>();
for (int i = 0; i < postHotDTOs.size(); i++ ) {
Bitmap temp = bitMap.returnBitMap(postHotDTOs.get(i).getAbstractImg());
bitHotMaps.add(temp);
} // UI thread
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
// init adapter
postAdapter = new PostAdapter(getActivity(), postHotDTOs, bitHotMaps);
lvHomePostItem.setAdapter(postAdapter); // hide loading textview
tvHomeLoading.setText("");
tvHomeLoading.getLayoutParams().height = 0; // set view unclickable while finishing
rlFragmentHome.setClickable(true);
}
});
}
}).start();
}
BaseAdapter教程(1) 最简单地使用BaseAdapter的更多相关文章
- 黑马lavarel教程---6、简单验证
黑马lavarel教程---6.简单验证 一.总结 一句话总结: 1.验证的最简单实例:$request的validate方法,验证通过可以继续进行,验证失败就重定向 2.中文提示可以用中文语言包 3 ...
- Directx11教程(20) 一个简单的水面
原文:Directx11教程(20) 一个简单的水面 nnd,以前发的这篇教程怎么没有了?是我自己误删除了,还是被系统删除了? 找不到存稿了,没有心情再写一遍了. 简单说一下,本篇教程就是实 ...
- Git简易教程-安装及简单使用
Git是一种版本控制器,在项目开发中可以用来托管代码 一.下载安装Git 1. Git下载 地址:https://git-scm.com/download/win 2. 安装 检验是否安装成功 电脑桌 ...
- WPF教程十一:简单了解并使用控件模板
WPF教程十一:简单了解并使用控件模板 这一章梳理控件模板,每个WPF控件都设计成无外观的,但是行为设计上是不允许改变的,比如使用Button的控件时,按钮提供了能被点击的内容,那么自由的改变控件外观 ...
- BaseAdapter教程(2) BaseAdapter的notifyDataSetChanged动态刷新
遇到了这麽一个需求,ListView滑到最底,然后会自动在底部加入新的Cell,实现动态刷新. 1. 首先,为ListView加上setOnScrollListener. lvHomePostItem ...
- 无废话WCF入门教程六[一个简单的Demo]
一.前言 前面的几个章节介绍了很多理论基础,如:什么是WCF.WCF中的A.B.C.WCF的传输模式.本文从零开始和大家一起写一个小的WCF应用程序Demo. 大多框架的学习都是从增.删.改.查开始来 ...
- Eclipse 00: 安装教程 + 汉化 + 简单创建java项目
Java 安装教程(Eclipse) 目录: 要安装Java 要分两个步骤: 1.JDK的安装 2.Eclipse的安装 3.Eclipse汉化 4.Eclipse创建简单java项目 1和2的顺序不 ...
- 【转】WCF入门教程六[一个简单的Demo]
一.前言 前面的几个章节介绍了很多理论基础,如:什么是WCF.WCF中的A.B.C.WCF的传输模式.本文从零开始和大家一起写一个小的WCF应用程序Demo. 大多框架的学习都是从增.删.改.查开始来 ...
- SSIS教程:创建简单的ETL包 -- 2. 添加循环(Adding Looping)
在第 1 课:创建项目和基本包中,创建了从单个平面文件源中提取数据的包,然后使用查找转换功能对数据进行了转换,最后将数据加载到AdventureWorksDW2012 示例数据库的 FactCurre ...
随机推荐
- VS.NET中的常用控件和类型的命名规范
表1 命名规范 VS名称 简写 VS名称 简写 数据类型 Array arr Boolean bln Byte byt Char Chr Date Time dtm Decimal dtm Doub ...
- pycharm 的 使用 设置智能目录 Pycharm 断点跳转及 Step Over/Step Into/Step Out 等的区别
pycharm 右键点击文件夹 有个mark directiory as 根据需要给目录进行设置 Pycharm调试程序时,有时需要直接从第一个断点跳转至第二个断点,如果还是用单步调试的话就非常 ...
- CNN:转置卷积输出分辨率计算
上一篇介绍了卷积的输出分辨率计算,现在这一篇就来写下转置卷积的分辨率计算.转置卷积(Transposed convolution),转置卷积也有叫反卷积(deconvolution)或者fractio ...
- 直击JDD | 陈生强:京东数科的底层是数字化操作系统
11月19日,由京东集团主办的JDD-2019京东全球科技探索者大会在京开幕,京东数字科技集团CEO陈生强作了题为"以科技为美,为价值而生"的主旨发言,再论"数字科技&q ...
- macOS下的播放器
很早前用 MplayerX, 现在不能用了, 找到一个替代品 https://iina.io/. 挺不错.
- 吴裕雄--天生自然MySQL学习笔记:MySQL GROUP BY 语句
GROUP BY 语句根据一个或多个列对结果集进行分组. 在分组的列上我们可以使用 COUNT, SUM, AVG,等函数. GROUP BY 语法 SELECT column_name, funct ...
- Java 知识点(一)
博主对 Java知识点的整理基于 c语言,整理内容为 Java的重点及与 c语言的差异点或编程通要知识点.水平有限,欢迎指正.(参考书籍<Java 核心技术 卷Ⅰ>) Java 的类名:名 ...
- 使用idea出现的错误
错误:打开maven项目时出现"程序包 com.sun.org.apache.xpath.internal 不可见 "的错误 这个问题出现的原因是: jdk版本的问题.可能是因为有 ...
- 1. react 编程实践 俄罗斯方块-需求分析
1. 需求分析 俄罗斯方块的要素 界面展示 定时刷新 键盘响应 方块模型 游戏规则 俄罗斯方块 比 "电商购物车" 好在哪? 业务比较简单, 人人都了解, 不需要过多前置知识 技术 ...
- 拉格朗日乘子(Lagrange multify)和KKT条件
拉格朗日乘子(Lagrange multify)和KKT条件 无约束问题 无约束问题定义如下: f(x)称为目标函数, 其中x是一个向量,它的维度是任意的. 通过求导, 令导数等于零即可: 如下图所示 ...