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 ...
随机推荐
- QSignalMapper is deprecated
今天参考 qt4 的书籍,在 qt5 的平台上面,用了 QSignalMapper,结果收到警告" QSignalMapper is deprecated". 经过一番查找,找到了 ...
- ACM&OI 基础数论算法专题
ACM&OI 基础数学算法专题 一.数论基础 质数及其判法 (已完结) 质数的两种筛法 (已完结) 算数基本定理与质因数分解 (已完结) 约数与整除 (已完结) 整除分块 (已完结) 最大公约 ...
- android studio 黑屏问题
AVD配置不对,打开AVD从新配置
- UVA 11922 伸展树Splay 第一题
上次ZOJ月赛碰到一个题目要求对序列中的某个区间求gcd,并且还要随时对某位数字进行修改 插入 删除,当时马上联想到线段树,但是线段树不支持增删,明显还是不可以的,然后就敲了个链表想暴力一下,结果TL ...
- 吴裕雄--天生自然TensorFlow2教程:前向传播(张量)- 实战
手写数字识别流程 MNIST手写数字集7000*10张图片 60k张图片训练,10k张图片测试 每张图片是28*28,如果是彩色图片是28*28*3-255表示图片的灰度值,0表示纯白,255表示纯黑 ...
- opencv进行视频播放每帧处理,读取视频失败
cv::VideoCapture capture(filename); if (!capture.isOpened()) { cout << "open video error& ...
- struct stat
stat函数用来获取指定路径的文件或者文件夹的信息. //! 需要包含的头文件 #include <sys/types.h> #include <sys/stat.h> //函 ...
- eclipse使用jetty服务器
1.安装Eclipse Jetty插件: 2.下载jetty(9.4.6): 3.配置jetty运行设置: 右键项目 run configurations,选择jetty webapp,新建项目. c ...
- 计蒜客 密码锁(BFS)
https://www.jisuanke.com/course/1797/121114 Description 现在一个紧急的任务是打开一个密码锁.密码由四位数字组成,每个数字从 1 到 9 进行编号 ...
- 生产事故(MongoDB数据分布不均解决方案)
可以很明显可以看到我们这个集合的数据严重分布不均匀. 一共有8个分片,面对这个情况我首先想到的是手动拆分数据块,但这不是解决此问题的根本办法. 造成此次生产事故的首要原因就是片键选择上的问题,由于片键 ...