在Android中就提供了专门列表显示条目的控件,ListView控件,ListView控件不是一次性加载全部数据,他是只加载用户在屏幕看得到的数据,当用户滑动的过程中在去加载新的数据,同时会自动销毁之前加载过的数据

什么时候使用ListView ?

答:当很多条目Item,显示都内容不同,数据不同,但是存放的位置是相似的,并且动态变化的条目Item(和数据),就可以用ListView

ListView的使用:

1.在布局中定义ListVIew

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"> <!-- 定义ListView -->
<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</ListView> </RelativeLayout>

2.在Java代码中找到ListVIew,再设置适配器 setAdapter(ListAdapter的子类)


为何有BaseAdapter的出现 ?

答:无论是ArrayAdapter还是SimpleAdapter,都是都不够灵活,所以Android提供了BaseAdapter适配器,BaseAdapter可以自定义适配器。

BaseAdapter是 ArrayAdapter 和 SimpleAdapter 的父类,所以可以理解为:ArrayAdapter 和 SimpleAdapter 都去继承了BaseAdapter后进行了封装

ListView+BaseAdapter代码:

package liudeli.ui.all;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ListAdapter;
import android.widget.ListView; public class ListViewActivity2 extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_listview2); ListView listView = findViewById(R.id.listview); ListAdapter listAdapter = new MyBaseAdapter();
listView.setAdapter(listAdapter);
} @Override
protected void onDestroy() {
super.onDestroy();
}
}

自定义BaseAdapter:

package liudeli.ui.all;

import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter; public class MyBaseAdapter extends BaseAdapter { private final String TAG = MyBaseAdapter.class.getSimpleName(); /**
* 此方法是返回 Item条目都总数,此方法非常重要
* @return
*/
@Override
public int getCount() {
return 10;
} @Override
public Object getItem(int position) {
return null;
} @Override
public long getItemId(int position) {
return 0;
} /**
* 此方法是返回 每一个条目Item的View,有十个条目Item就会执行此方法十次,此方法非常重要
* @param position
* @param convertView
* @param parent
* @return
*/
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Log.d(TAG, "调用了一次 getView position:" + position);
return null;
}
}

看显示的结果,就明白为什么说,getCount();  getView() 方法重要了

BaseAdapter 内部的实现:首先是要得到getCount(); 条目Item的总数,然后在去调用getView() 把getView 得到的View 绑定给条目Item加载等操作

Android-ListView-(BaseAdapter初步)的更多相关文章

  1. Android(java)学习笔记133:ListViewProject案例(ListView + BaseAdapter + CheckBox)

    这个案例可能稍微复杂一点,我会讲述详细一点: 1.首先是AndroidManifest.xml: <?xml version="1.0" encoding="utf ...

  2. Android ListView理解之BaseAdapter

    ListView是Android开发过程中较为常见的组件之一,它将数据以列表的形式展现出来.一般而言,一个ListView由以下三个元素组 成: 1.View,用于展示列表,通常是一个xml所指定的. ...

  3. Android listview与adapter用法(BaseAdapter + getView)

    Android listview与adapter用法http://www.cnblogs.com/zhengbeibei/archive/2013/05/14/3078805.html package ...

  4. Android(java)学习笔记75:ListViewProject案例(ListView + BaseAdapter + CheckBox)

    这个案例可能稍微复杂一点,我会讲述详细一点: 1. 首先是AndroidManifest.xml: <?xml version="1.0" encoding="ut ...

  5. Android ListView加载更多

    先看效果: ListView的footer布局: <?xml version="1.0" encoding="utf-8"?> <Relati ...

  6. [Android分享] 【转帖】Android ListView的A-Z字母排序和过滤搜索功能

      感谢eoe社区的分享   最近看关于Android实现ListView的功能问题,一直都是小伙伴们关心探讨的Android开发问题之一,今天看到有关ListView实现A-Z字母排序和过滤搜索功能 ...

  7. Android -- ListView(SimpleAdapter) 自定义适配器

    aaarticlea/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA ...

  8. Android ListView简单实用

    layout创建: activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/ ...

  9. Android Listview & Adapter

    Listview主要有两个职责: 将数据填充到布局 处理用户的选择点击等操作 列表的显示需要三个元素: ListVeiw 用来展示列表的View 适配器(Adapter) 用来把数据映射到ListVi ...

  10. android listview getviewtypecount和getItemViewType

    package newdemo.jeno.listviewdemo; import android.app.Activity;import android.os.Bundle;import andro ...

随机推荐

  1. 关于1.0.0版Backbone.js调用validate

    网上的调用这个方法的例子都是老版本的,新版本的调用方法有所变化,首先错误绑定事件error换成了invalid,其次设置数据时应传入{validate: true} var Chapter = Bac ...

  2. SQLite的基本用法

    SQLite是Android自带的轻量级数据库,接口封装的很好,不会SQL的也能很好的使用. 接下来讲一下怎么创建数据库.通过adb查看数据表和数据.增删查改. 一.创建数据库 Android封装了S ...

  3. Please specify exact device preset UUID

    Please specify exact device preset UUID 重启RAD IDE,重新选择 IOS Simulator ,iphone 机型!

  4. 小米手机Root 刷机

    需要备份的资料: miui系统资料:电话.短信.便签,有小米云账号wifi下自己会备份好的. 应用数据:微信.qq 聊天记录: UC浏览器收藏夹. root后, rootexplorer,选择某个文件 ...

  5. redis 批量删除键

    主题 为啥会有这篇文章呢? 在redis里我需要批量删除一些 "特殊" 的数据...这些特殊的数据用正常方法比较难删除...所以记录一下我的删除方法.. 背景与问题 我再用Spri ...

  6. elasticsearch must和should组合查询

    {"query": { "bool": { "should": [ {"bool": { "must" ...

  7. drbd switch off

    DRBD secondary to primary: drbdadm disconnect all drbdadm primary r0 --force mount /dev/drbd0 /mnt [ ...

  8. C#匿名类型 - Anonymous Types

    [C#匿名类型 - Anonymous Types] Anonymous types provide a convenient way to encapsulate a set of read-onl ...

  9. VUE+WebPack游戏设计:'乘法防线'游戏设计

  10. linux系统中的单引号和双引号

    一.为什么用quoting 前面说到,命令行在内容上主要由literal(一般文字)和meta(元字符)组成,而meta又由IFS.CR和其他字符组成(如=,$, > 等),通常这些原元字符都有 ...