博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BaseAdapter教程(1) 最简单地使用BaseAdapter
阅读量:7058 次
发布时间:2019-06-28

本文共 3866 字,大约阅读时间需要 12 分钟。

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
postDTOs; private List
bitMaps; // UI private TextView tvPostTitle; private TextView tvPostDate; private ImageView imgAbstractImg; public PostAdapter(Context context, List
postDTOs, List
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 
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
(); 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(); }

 

posted on
2017-12-27 21:21 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/chenkuang/p/8127748.html

你可能感兴趣的文章
收集的几篇关于Asp.Net处理原理和URL重写的几篇文章
查看>>
Bootstrap Table总结
查看>>
物联网如何跳出“看起来很美”?
查看>>
linux命令行后台运行与调回
查看>>
TryEnterCriticalSection
查看>>
用 Java 实现断点续传参考 (HTTP)
查看>>
VB6.0 取 毫秒级 时间戳
查看>>
unity KeyCode各键值说明
查看>>
Delphi中编写无输出函数名的DLL文件
查看>>
centos的基本命令04
查看>>
Codeforces Round #313 (Div. 2) D. Equivalent Strings(字符串+递归)
查看>>
20个案例掌握PL/SQL 基础
查看>>
windows下查看端口占用以及进程名称
查看>>
CH 5101 最长公共上升子序列
查看>>
水平分库分表的关键问题及解决思路
查看>>
Spring Boot 探索系列 - 自动化配置篇
查看>>
Jar包转成Dll的方式(带嵌套的jar也能做) (转)
查看>>
Linux-centos-7.2-64bit 安装配置mysql
查看>>
[javaEE] 控制浏览器缓存资源
查看>>
MyBatis传入参数为集合 list 数组 map写法
查看>>