• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Android开发学习——ListView+BaseAdapter的使用,androidbaseadapter

Android开发学习——ListView+BaseAdapter的使用,androidbaseadapter

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了Android开发学习——ListView+BaseAdapter的使用,androidbaseadapter等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Android开发学习——ListView+BaseAdapter的使用,androidbaseadapter


ListView

就是用来显示一行一行的条目的
MVC结构
 * M:model模型层,要显示的数据           ————people集合
 * V:view视图层,用户看到的界面          ————ListView
 * c:control控制层,操作数据如何显示     ————adapter对象
每一个条目都是一个View对象
BaseAdapter
* 必须实现的两个方法

 * 第一个

   //系统调用此方法,用来获知模型层有多少条数据
   @Override
   public int getCount() {
    return people.size();
   }

 * 第二个

   //系统调用此方法,获取要显示至ListView的View对象
   //position:是return的View对象所对应的数据在集合中的位置
   @Override
   public View getView(int position, View convertView, ViewGroup parent) {
    System.out.println("getView方法调用" + position);
    TextView tv = new TextView(MainActivity.this);
    //拿到集合中的元素
    Person p = people.get(position);
    tv.setText(p.toString());
    
    //把TextView的对象返回出去,它会变成ListView的条目
    return tv;
   }
屏幕上能显示多少个条目,getView方法就会被调用多少次,屏幕向下滑动时,getView会继续被调用,创建更多的View对象显示至屏幕
条目的缓存
当条目划出屏幕时,系统会把该条目缓存至内存,当该条目再次进入屏幕,系统在重新调用getView时会把缓存的条目作为convertView参数传入,但是传入的条目不一定是之前被缓存的该条目,即系统有可能在调用getView方法获取第一个条目时,传入任意一个条目的缓存

 

代码如下:

activity_main.xml:

<LinearLayout 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.example.list.MainActivity" >

    <ListView 
       android:id="@+id/lv"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent"       
       ></ListView>


</LinearLayout>

item.xml

<?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="match_parent"
    android:orientation="vertical" >
    <ImageView
        android:id="@+id/iv"
        android:src="@drawable/xing"
        android:layout_width="80dp"
        android:layout_height="80dp" 
             
        />
    <TextView 
        android:id="@+id/t1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        
        />
    <TextView 
        android:id="@+id/t2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" 
             
        />
    

</LinearLayout>

MainActivity.java

public class MainActivity extends Activity {
    List<shopInfo> l;
    ListView lv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        lv = (ListView) findViewById(R.id.lv);
        //准备集合数据
        l = new ArrayList<shopInfo>();
        l.add(new shopInfo(R.drawable.xing, "name-1", "content-1"));
        l.add(new shopInfo(R.drawable.xing, "name-2", "content-2"));
        l.add(new shopInfo(R.drawable.xing, "name-3", "content-3"));
        l.add(new shopInfo(R.drawable.xing, "name-4", "content-4"));
        l.add(new shopInfo(R.drawable.xing, "name-5", "content-5"));
        l.add(new shopInfo(R.drawable.xing, "name-6", "content-6"));
        l.add(new shopInfo(R.drawable.xing, "name-7", "content-7"));
        l.add(new shopInfo(R.drawable.xing, "name-8", "content-8"));
   //准备BaseAdapter对象
        MyAdapter a = new MyAdapter();
        //设置Adapter显示数据
        lv.setAdapter(a);

    }
//这个类可以写在里面,也可以写在外面
    public class MyAdapter extends BaseAdapter {

        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return l.size();
        }

        @Override
        public Object getItem(int arg0) {
            // TODO Auto-generated method stub
            return null;
        }

        @Override
        public long getItemId(int arg0) {
            // TODO Auto-generated method stub
            return 0;
        }


//第一种:没有任何处理,不建议这样写。如果数据量少看将就,但是如果列表项数据量很大的时候,会每次都重新创建View,设置资源,严重影响性能,所以从一开始就不要用这种方式 @Override
public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub // 加载item的布局 View view = View.inflate(MainActivity.this, R.layout.item, null); shopInfo s = l.get(position); ImageView i = (ImageView) view.findViewById(R.id.iv); TextView t1 = (TextView) view.findViewById(R.id.t1); TextView t2 = (TextView) view.findViewById(R.id.t2); i.setImageResource(s.getIcon()); t1.setText(s.getName()); t2.setText(s.getContent()); convertView = view ; return convertView; } } }

shopInfo.java

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Android开发学习——ListView+BaseAdapter的使用,androidbaseadapter

相关文章

  • 2017-05-26简单的数据类型转换的工具类,数据类型工具类
  • 2017-05-225.2.5 Fragment实例精讲——新闻(购物)类App列表Fragment的简单实现
  • 2017-05-26一个难倒 3年 android开发经验 &quot; 工程师 &quot; 的 &quot;bug&quot;
  • 2017-05-26Android 面试题--Activity,android--activity
  • 2017-05-26[android] 手机卫士自定义对话框布局,android卫士
  • 2017-05-26微信支付,信支付
  • 2017-05-26Android View体系之从源码解析Scroller的相关内容
  • 2017-05-26android开发,权限获取,android开发权限
  • 2017-05-26Android 手机卫士--9patch图,
  • 2017-05-26zabbix 应用系统系统网络连接数的监测

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 高并发低基数多字段任意组合查询的优化
    • Picasso处理同一url,但资源变了的情况,picassourl
    • 暂停和恢复Activity Android,activityandroid
    • 自定义数字加减控件,自定义数字控件
    • Android开发学习——画横线竖线,android横线
    • Android的Dialog工具
    • Android:应用宝省流量更新
    • 购物车动画(Android),购物车动画android
    • Android handler 详解(面试百分之100问到),androidhandler
    • 我的android学习经历13,android学习经历13

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有