将优化后的BaseAdapter封装成一个通用的万能适配器,第一次的封装还不够完善,以后将改进和优化.

package com.xspacing.commonadapter;import java.util.ArrayList;
import java.util.List;import com.xspacing.commonadapter.CommonAdapter.OnListenerView;import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.Toast;public class MainActivity extends Activity {protected static final String TAG = "MainActivity";private ListView listView;private Context mContext;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mContext = this;final List<Student> list = new ArrayList<Student>();listView = (ListView) findViewById(R.id.main_listview);// 添加假数据for (int i = 0; i < 20; i++) {Student student = new Student();if (i % 2 == 0) {student.name = i + ".阳澄湖大闸蟹";student.desc = "9月23日正式开湖";student.reId = R.drawable.a25;} else {student.name = i + ".特大新闻";student.desc = "上海将举行xxx的演唱会";student.reId = R.drawable.a26;}list.add(student);}CommonAdapter<Student> commonAdapter = new CommonAdapter<Student>(mContext, list, R.layout.item_list_view);// 接口回调,获取position和ViewHolder对象commonAdapter.setOnListenerView(new OnListenerView() {@Overridepublic void ViewChange(ViewHolder mHolder, int position) {// 设置参数mHolder.SetText(list.get(position).desc, R.id.main_tv_desc);mHolder.SetText(list.get(position).name, R.id.main_tv_name);mHolder.setImageResource(list.get(position).reId, R.id.main_img);}});listView.setAdapter(commonAdapter);// 监听每个itemlistView.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {Toast.makeText(getApplicationContext(), position + "", Toast.LENGTH_SHORT).show();}});}}
package com.xspacing.commonadapter;public class Student {public String name; // 标题public int reId; // 图片IDpublic String desc;// 描述public Student(String name, String desc, int reId) {this.name = name;this.desc = desc;this.reId = reId;}public Student() {}}
package com.xspacing.commonadapter;import java.util.List;import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;/*** * @ClassName CommonAdapter.java* @Description 定制一个简单的万能适配器* @author Smile* @version v1.0* @date 2016年9月21日 上午10:45:17*/
public class CommonAdapter<T> extends BaseAdapter {private static final String TAG = "CommonAdapter";List<T> list;Context mContext;ViewHolder mHolder = null;int layoutId;public CommonAdapter() {}public CommonAdapter(Context mContext, List<T> list, int layoutId) {this.list = list;this.mContext = mContext;this.layoutId = layoutId;}@Overridepublic int getCount() {return list.size();}@Overridepublic Object getItem(int position) {return list.get(position);}@Overridepublic long getItemId(int position) {return position;}public interface OnListenerView {void ViewChange(ViewHolder mHolder, int position);}OnListenerView listener;public View getView(int position, View convertView, ViewGroup parent) {if (convertView == null) {convertView = LayoutInflater.from(mContext).inflate(layoutId, parent, false);mHolder = new ViewHolder(convertView);convertView.setTag(mHolder);Log.i(TAG, "新生资源");} else {Log.i(TAG, "复用资源");mHolder = (ViewHolder) convertView.getTag();}listener.ViewChange(mHolder, position);return mHolder.getConvertView();}public void setOnListenerView(OnListenerView listener) {this.listener = listener;}}
package com.xspacing.commonadapter;import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.util.SparseArray;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;/*** * @ClassName ViewHolder.java* @Description 将布局的控件封装成一个类* @author Smile* @version v1.0* @date 2016年9月21日 上午11:06:29*/
public class ViewHolder {View mConvertView;SparseArray<View> mViews; // 类似于一个Map<Integer,View>public ViewHolder(View convertView) {this.mConvertView = convertView;mViews = new SparseArray<View>();}public View getConvertView() {return mConvertView;}public void SetText(String content, int layoutId) {TextView tv = (TextView) getView(layoutId);tv.setText(content);}public void setImageResource(int resId, int layoutId) {ImageView imageView = (ImageView) getView(layoutId);imageView.setImageResource(resId);}public void setImageBitmap(Bitmap bitmap, int layoutId) {ImageView imageView = (ImageView) getView(layoutId);imageView.setImageBitmap(bitmap);}public void setImageDrawable(Drawable drawable, int layoutId) {ImageView imageView = (ImageView) getView(layoutId);imageView.setImageDrawable(drawable);}// 防止重复取idpublic Object getView(int layoutId) {View view = mViews.get(layoutId);if (view == null) {view = mConvertView.findViewById(layoutId);mViews.put(layoutId, view);}return view;}
}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="com.xspacing.commonadapter.MainActivity" ><ListView
        android:id="@+id/main_listview"android:layout_width="match_parent"android:layout_height="match_parent" ></ListView></RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_margin="10dp" ><ImageView
        android:id="@+id/main_img"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/ic_launcher" /><LinearLayout
        android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"android:gravity="center"android:orientation="vertical"android:padding="5dp" ><TextView
            android:id="@+id/main_tv_name"android:layout_width="match_parent"android:layout_height="wrap_content" /><TextView
            android:id="@+id/main_tv_desc"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="2dp" /></LinearLayout></LinearLayout>

打造一个简单的万能适配器相关推荐

  1. 【造轮子】打造一个简单的万能Excel读写工具

    大家工作或者平时是不是经常遇到要读写一些简单格式的Excel? shit!~很蛋疼,因为之前吹牛,就搞了个这东西,还算是挺实用,和大家分享下. 厌烦了每次搞简单类型的Excel读写?不怕~来,喜欢流式 ...

  2. 【造轮子/更新】打造一个简单的万能Excel读写工具

    ExcelReads(简单Excel通用读写器) ExcelReads是什么? https://github.com/MatrixSeven/ExcelReads 这是一个通用的简单的Excel读取器 ...

  3. 用CSS和JS打造一个简单的图片编辑器

    用CSS和JS打造一个简单的图片编辑器,本文主要是利用CSS的filter和简单的Jquery代码来实现一个简单的图片编辑器,包括对图片的透明度,黑白,图片亮度等调节. CSS filter 我们首先 ...

  4. python程序30行_30行Python代码,打造一个简单的微信群聊助手,简单方便

    大家都知道,最近代码君迷上了Python,一直在研究这门语言,还是那句话,人生苦短,我学Python,今天代码君要教大家一个黑科技,30行代码实现自己定制的微信群聊助手,这个助手有什么用呐,就是用来活 ...

  5. 运用HashMap和ArrayList打造一个简单的带文件的控制台学生管理系统(附上类及类方法的思维导图+控制台运行界面截图+源代码)

    文章目录: 一.本文由来 二.适合人群 三.类及类方法思维导图 四.控制台运行界面截图 五.项目源代码链接 六.后记 七.再回首 一.本文由来 今天是2020年1月23日.因为在2019年上半学期Ja ...

  6. python关于七巧板的代码_Css打造一个简单的静态七巧板

    偶然在微博上看到用css写一个七巧板,正好也有一些源代码,于是就试着敲了敲. 主要是利用了css3的transform,实现平移,旋转,变形,直接用看到的代码敲出来之后有些问题,因为宽度上下面绿色的三 ...

  7. 好程序员web前端分享用CSS和JS打造一个简单的图片编辑器

    本文主要是利用 CSS的 filter和简单的Jquery代码来实现一个简单的图片编辑器,包括对图片的透明度,黑白,图片亮度等调节. CSS filter 我们首先来探讨一下 filter. 首先来说 ...

  8. [DIV/CSS] 用CSS和JS打造一个简单的图片编辑器

    本文主要是利用CSS的 filter和简单的Jquery代码来实现一个简单的图片编辑器,包括对图片的透明度,黑白,图片亮度等调节. CSS filter 我们首先来探讨一下filter. 首先来说明一 ...

  9. Css打造一个简单的静态七巧板

    偶然在微博上看到用css写一个七巧板,正好也有一些源代码,于是就试着敲了敲. 主要是利用了css3的transform,实现平移,旋转,变形,直接用看到的代码敲出来之后有些问题,因为宽度上下面绿色的三 ...

最新文章

  1. 16 开机自动登录脚本_创建计划任务自动运行程序---运维无人值守
  2. PHP垃圾回收深入理解
  3. iOS 第三方登录之 QQ登录
  4. 中等职业学校计算机专业定位,中等职业学校计算机专业教学探讨
  5. 关于代码审查,那些你不曾关注的细节
  6. android md5使用方法,android 使用DigestUtilsmd5加密的方法
  7. cgroup学习(五)—— create new cgroup
  8. python函数案例名片管理器_python实现名片管理器的示例代码
  9. 计算机组成原理课程设计报告,计算机组成原理课程设计报告.doc
  10. 前端 利用html实现分页切换效果
  11. iOS 中可能用到的数学公式(绝对值、平方、取整、正余弦)
  12. 平面的几种的方程表示
  13. Android WiFi 打开关闭流程
  14. [CISCN2019 华东南赛区]Web11
  15. 注册石墨文档无法连接服务器,石墨文档没有访问权限怎么办
  16. 跟班学习JavaScript第二天———流程控制、分支、循环、函数
  17. Arduino-超声波测距仪-实现近距离蜂鸣器报警
  18. 怎么培养孩子的金钱观
  19. 彩色图像的二值化,取经之旅第 6 天
  20. Matlab App Designer 实现简单程序的设计笔记 (实时更新)

热门文章

  1. 五分钟学后端技术:如何学习分布式系统和相关技术
  2. hadoop metrics 各参数解释
  3. JavaScript随机选几个人,不重复
  4. 单精度浮点数加法器电路设计
  5. DOM和BOM总结及事件内容
  6. Android PLOG打印log
  7. python海贼王logo_Python 学习笔记---爬取海贼王动漫
  8. 【乌鸦算法】基于正弦余弦指引乌鸦算法求解单目标优化问题含Matlab代码
  9. Consider defining a bean of type ‘com.XXX‘ in your configuration.
  10. 【转】RS232、RS485、TTL电平、CMOS电平