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. 吴裕雄--天生自然 JAVASCRIPT开发学习:条件语句

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  2. (递归)Hanoi Tower

    #include<stdio.h>void move(int n,char a,char b){ printf("将第%d个盘子从%c移动到%c\n",n,a,b);  ...

  3. 201771010123汪慧和《面向对象程序设计Java》第十八周实验总结

    一.总复习纲要 1. Java语言特点与开发环境配置(第1章.第2章) 2. Java基本程序结构(第3章) 3. Java面向对象程序结构(第4章.第5章.第6章) 4. 类.类间关系.类图 5. ...

  4. 【php】Swoole之php高性能通信框架

    Swoole介绍 swoole是由c语言开发的异步网络通信引擎,被编译为so文件(swoole.so)作为php的extesion扩展. 与其他普通扩展不同: 与普通的扩展不同的是普通的扩展只是提供一 ...

  5. Python说文解字_Python之多任务_02

    第三部分:Semaphore控制进入数量的锁 有时候可能需要运行多个工作线程同时访问一个资源,但要限制总数.例如,连接池支持同时连接,但是数目可能是固定的,或者一个网络应用可能支持固定数据的并发下载. ...

  6. puts函数出现warning: passing argument 1 of ‘puts’ from incompatible pointer type(警告:从不兼容的指针类型传递“puts”的参数1)

    代码: /************************************************************************* > File Name: ptr_v ...

  7. UML-用例关联

    1.用例关联:就是各个用例之间的关系,分3种关系分别是:包含关系.扩展关系.泛化关系. 2.包含关系 1).示例 2).使用场景 A.用例在其他用例中重复使用 B.用例非常复杂冗长,将其分解为子单元便 ...

  8. pywin32获得tkinter窗口句柄,并在上面绘图

    想实现用win32 API在tkinter窗口上画图,那么应该先获得tkinter窗口的句柄hwnd,然后再获得tkinter的设备hdc.尝试了FindWindow(),GetActiveWindo ...

  9. java笔记3-手写

    关于类的一些笔记

  10. Maven--Cargo远程部署

    参考:https://www.digitalocean.com/community/questions/how-to-access-tomcat-8-admin-gui-from-different- ...