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的更多相关文章

  1. 黑马lavarel教程---6、简单验证

    黑马lavarel教程---6.简单验证 一.总结 一句话总结: 1.验证的最简单实例:$request的validate方法,验证通过可以继续进行,验证失败就重定向 2.中文提示可以用中文语言包 3 ...

  2. Directx11教程(20) 一个简单的水面

    原文:Directx11教程(20) 一个简单的水面 nnd,以前发的这篇教程怎么没有了?是我自己误删除了,还是被系统删除了? 找不到存稿了,没有心情再写一遍了.      简单说一下,本篇教程就是实 ...

  3. Git简易教程-安装及简单使用

    Git是一种版本控制器,在项目开发中可以用来托管代码 一.下载安装Git 1. Git下载 地址:https://git-scm.com/download/win 2. 安装 检验是否安装成功 电脑桌 ...

  4. WPF教程十一:简单了解并使用控件模板

    WPF教程十一:简单了解并使用控件模板 这一章梳理控件模板,每个WPF控件都设计成无外观的,但是行为设计上是不允许改变的,比如使用Button的控件时,按钮提供了能被点击的内容,那么自由的改变控件外观 ...

  5. BaseAdapter教程(2) BaseAdapter的notifyDataSetChanged动态刷新

    遇到了这麽一个需求,ListView滑到最底,然后会自动在底部加入新的Cell,实现动态刷新. 1. 首先,为ListView加上setOnScrollListener. lvHomePostItem ...

  6. 无废话WCF入门教程六[一个简单的Demo]

    一.前言 前面的几个章节介绍了很多理论基础,如:什么是WCF.WCF中的A.B.C.WCF的传输模式.本文从零开始和大家一起写一个小的WCF应用程序Demo. 大多框架的学习都是从增.删.改.查开始来 ...

  7. Eclipse 00: 安装教程 + 汉化 + 简单创建java项目

    Java 安装教程(Eclipse) 目录: 要安装Java 要分两个步骤: 1.JDK的安装 2.Eclipse的安装 3.Eclipse汉化 4.Eclipse创建简单java项目 1和2的顺序不 ...

  8. 【转】WCF入门教程六[一个简单的Demo]

    一.前言 前面的几个章节介绍了很多理论基础,如:什么是WCF.WCF中的A.B.C.WCF的传输模式.本文从零开始和大家一起写一个小的WCF应用程序Demo. 大多框架的学习都是从增.删.改.查开始来 ...

  9. SSIS教程:创建简单的ETL包 -- 2. 添加循环(Adding Looping)

    在第 1 课:创建项目和基本包中,创建了从单个平面文件源中提取数据的包,然后使用查找转换功能对数据进行了转换,最后将数据加载到AdventureWorksDW2012 示例数据库的 FactCurre ...

随机推荐

  1. C++ Opencv播放AVI

    #include "cxcore.h" #include "cvcam.h" #include "windows.h" #include & ...

  2. Java算法练习——两数之和

    题目链接 题目描述 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利 ...

  3. 洛谷 P5662 纪念品

    题目传送门 解题思路: 一道DP,完全背包,不过有点不同于模板.因为本题的每件物品可自由在不同的时间买卖,且不同时间价格不同. 这道题的关键在于要明白一个非常傻逼的性质,就是我在某天买了第i个物品,然 ...

  4. 尝试解决 : Microsoft Visual C++ 14.0 is required 的问题

    当在pycharm  中安装  gevent 的时候 发生了  错误   晚上搜索的时候发现  解决问题有两种 方法 1  是   下载  whl  文件  通过二进制的方式 导入模块的包   想了想 ...

  5. h5-切割轮播图

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. 强大的代码生成器——T4模板

    T4 Editor工具下载地址 tangible T4 Editor 2.5.0 plus modeling tools for VS 2019 https://marketplace.visuals ...

  7. Bugku 社工

    1.密码 姓名:张三 生日:19970315 猜想KEY是:zs19970315.  结果就是如此.

  8. INNER JOIN & OUTER JOIN

    INNER JOIN & OUTER JOIN 参考:sql

  9. linux tar/ tar.gz文件解压

    1.tar 压缩 tar -cvf jpg.tar *.jpg //将目录里所有jpg文件打包成tar.jpg tar -czf jpg.tar.gz *.jpg   //将目录里所有jpg文件打包成 ...

  10. POJ 1847:Tram

    Tram Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 11771   Accepted: 4301 Description ...