1.逗比式

 //逗比式............................................
//加载布局文件
//将xml文件转化为view,获取到view
//由于我们只需要将XML转化为View,并不涉及到具体的布局,所以第二个参数通常设置为null
// View view = inflater.inflate(R.layout.item_buju,null);
// // 实例化控件
// ImageView imageView = (ImageView) view.findViewById(R.id.img);
// TextView text_title = (TextView) view.findViewById(R.id.title1);
// TextView text_context = (TextView) view.findViewById(R.id.context1);
// //给view中对应的每一个控件赋值
// imageView.setImageResource(data.get(position).itemImageID);
// text_title.setText(data.get(position).itemTitle_ID);
// text_context.setText(data.get(position).itemContext_ID);
// return view;
//逗比式...........................................

  

2.普通式

//普通式..........................................
//注册view中对应的每一个控件
// if(convertView == null){
// convertView = inflater.inflate(R.layout.item_buju,null);
// }
// ImageView imageView = (ImageView) convertView.findViewById(R.id.img);
// TextView text_title = (TextView) convertView.findViewById(R.id.title1);
// TextView text_context = (TextView) convertView.findViewById(R.id.context1);
// //给view中对应的每一个控件赋值
// imageView.setImageResource(data.get(position).itemImageID);
// text_title.setText(data.get(position).itemTitle_ID);
// text_context.setText(data.get(position).itemContext_ID);
// return convertView;
//普通式..........................................

  

3.文艺式

 //文艺式..........................................
//避免重复创建 如果存在缓存池中就不用创建
ViewHolder viewHolder;
if(convertView == null){
viewHolder = new ViewHolder();
convertView = inflater.inflate(R.layout.item_buju,null);
viewHolder.imageView = (ImageView) convertView.findViewById(R.id.img);
viewHolder.title = (TextView) convertView.findViewById(R.id.title1);
viewHolder.context = (TextView) convertView.findViewById(R.id.context1);
convertView.setTag(viewHolder);
}
else{
viewHolder = (ViewHolder) convertView.getTag();
} //给view中对应的每一个控件赋值
viewHolder.imageView.setImageResource(data.get(position).itemImageID);
viewHolder.title.setText(data.get(position).itemTitle_ID);
viewHolder.context.setText(data.get(position).itemContext_ID);
return convertView;
//文艺式..........................................

  

MainActivity.java
public class MainActivity extends AppCompatActivity {
private ListView listView;
private List<MyItem> data;
private Myadapter myadapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化
init();
}
private void init() {
listView = (ListView) findViewById(R.id.listview);
//实例化 数据源
data = new ArrayList<>();
//加载到data List<MyItem>
for(int i = 0;i < 200 ; i++){
data.add(new MyItem(android.R.drawable.sym_def_app_icon,"我是标题!"+i,"我是内容" + i));
}
//实例化适配器 Myadapter
myadapter =new Myadapter(data,MainActivity.this);
//加载适配器
listView.setAdapter(myadapter);
}
}

  

Myadapter.java (自己创建的适配器 继承BaseAdapter)
public class Myadapter extends BaseAdapter{
private List<MyItem> data;
private LayoutInflater inflater; public Myadapter(List<MyItem> data, Context context) {
this.data = data; //获取上下文
this.inflater = LayoutInflater.from(context);
} @Override
public int getCount() {
return data.size();
} @Override
public Object getItem(int position) {
return data.get(position);
} @Override
public long getItemId(int position) {
return position;
} @Override
public View getView(int position, View convertView, ViewGroup parent) {
//逗比式............................................
//加载布局文件
//将xml文件转化为view,获取到view
// View view = inflater.inflate(R.layout.item_buju,null);
// //注册view中对应的每一个控件
// ImageView imageView = (ImageView) view.findViewById(R.id.img);
// TextView text_title = (TextView) view.findViewById(R.id.title1);
// TextView text_context = (TextView) view.findViewById(R.id.context1);
// //给view中对应的每一个控件赋值
// imageView.setImageResource(data.get(position).itemImageID);
// text_title.setText(data.get(position).itemTitle_ID);
// text_context.setText(data.get(position).itemContext_ID);
// return view;
//逗比式........................................... //普通式..........................................
//注册view中对应的每一个控件
// if(convertView == null){
// convertView = inflater.inflate(R.layout.item_buju,null);
// }
// ImageView imageView = (ImageView) convertView.findViewById(R.id.img);
// TextView text_title = (TextView) convertView.findViewById(R.id.title1);
// TextView text_context = (TextView) convertView.findViewById(R.id.context1);
// //给view中对应的每一个控件赋值
// imageView.setImageResource(data.get(position).itemImageID);
// text_title.setText(data.get(position).itemTitle_ID);
// text_context.setText(data.get(position).itemContext_ID);
// return convertView;
//普通式.......................................... //文艺式..........................................
//避免重复创建 如果存在缓存池中就不用创建
ViewHolder viewHolder;
if(convertView == null){
viewHolder = new ViewHolder();
convertView = inflater.inflate(R.layout.item_buju,null);
viewHolder.imageView = (ImageView) convertView.findViewById(R.id.img);
viewHolder.title = (TextView) convertView.findViewById(R.id.title1);
viewHolder.context = (TextView) convertView.findViewById(R.id.context1);
convertView.setTag(viewHolder);
}
else{
viewHolder = (ViewHolder) convertView.getTag();
} //给view中对应的每一个控件赋值
viewHolder.imageView.setImageResource(data.get(position).itemImageID);
viewHolder.title.setText(data.get(position).itemTitle_ID);
viewHolder.context.setText(data.get(position).itemContext_ID);
return convertView;
//文艺式.......................................... }
//View的容器 用class来封装
class ViewHolder{
public ImageView imageView;
public TextView title;
public TextView context;
} }

ListView<Myitem>中每一个item布局,Myitem_buju.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"> <ImageView
android:id="@+id/img"
android:background="@android:drawable/sym_def_app_icon"
android:layout_width="60dp"
android:layout_height="60dp" /> <TextView
android:id="@+id/title1"
android:text="Title"
android:textSize="25sp"
android:gravity="center"
android:layout_toEndOf="@+id/img"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/context1"
android:text="Context"
android:textSize="20sp"
android:gravity="center_vertical"
android:layout_toEndOf="@+id/img"
android:layout_below="@+id/title1"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</RelativeLayout>

  ListView<Myitem>中每一个item类,Myitem.class:

package com.example.administrator.ten_88;

/**
* Created by Administrator on 2015/10/8 0008.
*/
public class MyItem {
public int itemImageID;
public String itemTitle_ID;
public String itemContext_ID; public MyItem(int itemImageID, String itemTitle_ID, String itemContext_ID) {
this.itemImageID = itemImageID;
this.itemTitle_ID = itemTitle_ID;
this.itemContext_ID = itemContext_ID;
}
}

  

BaseAdapter的使用与优化的更多相关文章

  1. 关于BaseAdapter的使用及优化心得(一)

    对于Android程序员来说,BaseAdapter肯定不会陌生,灵活而优雅是BaseAdapter最大的特点.开发者可以通过构造BaseAdapter并搭载到ListView或者GridView这类 ...

  2. Android ListView使用BaseAdapter与ListView的优化 (转至 http://www.open-open.com/lib/view/open1339485728006.html)

    在ListView的使用中,有时候还需要在里面加入按钮等控件,实现单独的操作.也就是说,这个ListView不再只是展示数据,也不仅仅是这一行要来处理用户的操作,而是里面的控件要获得用户的焦点.读者可 ...

  3. android第三方框架 xlistview 的使用

    如今上拉刷新,下拉加载更多已经是浩如烟海的app的标配了 最近正好有相关的需要就去学习了一下,还是那句老话凡事都靠自己来 搞实在不是一件好事,费时费力不说可能还是在做无用功,不过自己研究学习 还是很有 ...

  4. Android listview与adapter用法

    listview与adapter用法 博客分类: android   一个ListView通常有两个职责. (1)将数据填充到布局. (2)处理用户的选择点击等操作. 第一点很好理解,ListView ...

  5. colorPrimaryDark无法改变状态栏颜色

    设置完colorPrimaryDark后,这个颜色是改变状态栏的颜色的, colorPrimary是改变标题栏背景色的 发现状态栏一直是灰色. 然后在布局文件中 AndroidMainifest.xm ...

  6. ListView 和 Adapter用法

    一个ListView通常有两个职责. (1)将数据填充到布局. (2)处理用户的选择点击等操作. 第一点很好理解,ListView就是实现这个功能的.第二点也不难做到,在后面的学习中读者会发现,这非常 ...

  7. Android中 ListView 详解(二)

    本文版权归 csdn noTice501 所有,转载请详细标明原作者及出处,以示尊重! 作者:noTice501 原文:http://blog.csdn.net/notice520/article/d ...

  8. 【转】android应用开发全程实录-你有多熟悉listview?---不错

    原文网址:http://www.cnblogs.com/noTice520/archive/2011/12/05/2276379.html 今天给大家带来<android应用开发全程实录> ...

  9. android应用开发全程实录-你有多熟悉listview

    http://blog.csdn.net/notice520/article/details/7040962 今天给大家带来<android应用开发全程实录>中关于listview和ada ...

随机推荐

  1. lua学习笔记1--基础语法

    print("打印日志");--单行注释 --[[ 多行注释 --]] a = --变量的类型,是由变量储存的数据决定 数据类型: number:数值类型,可以存储整数和小数 bo ...

  2. Unity热更新 xLua

    xLua是Unity3D下Lua编程解决方案,自2016年初推广以来,已经应用于十多款腾讯自研游戏,因其良好性能.易用性.扩展性而广受好评.现在,腾讯已经将xLua开源到GitHub. 2016年12 ...

  3. 工具 --- Git

    Git介绍 Git是目前世界上最先进的分布式版本控制系统. git 诞生: git诞生之前当时的CVS和SVN这些集中式的版本控制系统不但速度慢,而且必须联网才可以使用.由于代码量越来越多,linus ...

  4. Django组件-admin

    一. admin组件的使用 Django 提供了基于 web 的管理工具. Django 自动管理工具是 django.contrib 的一部分.你可以在项目的 settings.py 中的 INST ...

  5. 安装cinder

    在控制节点上安装 备注:安装cinder时,nova-compute创建虚拟机时会默认使用cinder指定的存储方式,所以,如果你还要使用本地存储的话,请先参考我这边文章进行设置: 配置nova-co ...

  6. TensorFlow-cpu优化及numpy优化

    1,TensorFlow-cpu优化 当你使用cpu版TensorFlow时(比如pip安装),你可能会遇到警告,说你cpu支持AVX/AVX2指令集,那么在以下网址下载对应版本. https://g ...

  7. bert系列二:《BERT》论文解读

    论文<BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding> 以下陆续介绍ber ...

  8. NumSharp的数组切片功能

    NumSharp的数组切片功能 原文地址:https://medium.com/scisharp/slicing-in-numsharp-e56c46826630 翻译初稿(英文水平有限,请多包涵): ...

  9. 教你如何在Ubuntu上安装最新的Python版本

    参考链接:https://cloud.tencent.com/developer/news/343104

  10. Go语言中数组的内部实现和基础功能

    数组的内部实现和基础功能 因为数组是切片和映射的基础数据结构.理解了数组的工作原理,有助于理解切片和映射提供的优雅和强大的功能. 内部实现 在Go语言里,数组是一个长度固定的数据类型,用于存储一段具有 ...