`
119568242
  • 浏览: 430972 次
  • 性别: Icon_minigender_1
  • 来自: 深圳/湛江
社区版块
存档分类
最新评论

Android菜鸟日记20 - ListView

 
阅读更多
Android菜鸟日记
20 ListView

ListView之前已经在布局那篇写过了 后来发现这个系统自带的功能还是比较多的 很多东西完全不用自己来弄。

首先是上次写的
10.ListView 列表控件 [重点且相对复杂]

作用:列表显示信息内容
解释:
    封装listView到activity的ListACtivity
Listview中的每行信息都是一个hashmap对象
Hashmap中存放<string ,string>的键值对
再把每个hashMap存入arraylist对象。
arraylist对象作为数据源备用。
listActivity需要自己的布局文件(废话 下面一句是重点)
listActivity 是需要设置适配器的
SimpleAdapter listAdapter = new SimpleAdapter(this,list,R.layout.main3,new String[]{"name","age","sex"},new int[]{R.id.tx,R.id.tx2,R.id.tx3});

SDK:
SimpleAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to)

//Context context                      上下文 也就是this
//List<? extends Map<String, ?>> data 数据源 也就是 ArrayList对象
//int resource                           每行的布局文件,控制每行的布局
// String[] from                         每行中需要显示的数据的键 组成的数组
// int[] to                               前面需要显示的键值 对应显示的控件。
设置完设置适配器后需要this.setListAdapter(listAdapter)
把适配器设置到listactivity上。
适配器(Adapter):用于把资源与其他对象对接
Ex:把几个参数适配成一个对象。以方便使用。

在布局文件中写入listview
    <ListView
    android:id="@id/android:list"//
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:scrollbars="vertical"
/>



监听:
protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
}
可以在listactivity中写onListItemClick方法设置监听。
ListView l: listview控件对象
View v     :  被点击的控件对象(2011-8-13时只知道是选择一行一行的)
int position:被点击控件位置
long id    :  被点击控件位置ID
[关于id和position(位置)的思考]
Id是自然不变的 是1就是1 但是位置可变的 如果我把第二行拖到了第一行ID为改变但位置position改变了





这次的:

上面传入的adapter是simpleAdapter
其实一些简单的不需要如此麻烦
直接传入ArrayAdpater即可了
New ArrayAdapter(Context ct,布局方式,String [] data);
布局方式是通过R.layout.XXX
或者调用系统本身的 android.R.layout.xxx
Android系统中几个自带的比较常用的

android.R.layout.simple_list_item_single_choice


android.R.layout.simple_list_item_multiple_choice


android.R.layout.simple_list_item_checked

android.R.layout.simple_list_item_1



通过下面对适配 给list的适配器更加理解
package com.lurencun.TestRoom;

import java.util.ArrayList;
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;
import android.widget.LinearLayout;
import android.widget.TextView;

public class MyAdapter extends BaseAdapter {

private List list = new ArrayList();
private Context ct=null;

public MyAdapter(Context ct)
{
this.ct=ct;
Log.v("myTag", "list.size"+list.size());

}

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

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

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

public void addString(String temp) {
list.add(temp);
this.notifyDataSetChanged();
}

@Override
public View getView(int position, View convertView, ViewGroup parent)
{
// String inflater = Context.LAYOUT_INFLATER_SERVICE;
// LayoutInflater layoutInflater = (LayoutInflater) ct
// .getSystemService(inflater);
//
// //从系统获得布局填充器
// LinearLayout linearLayout = null;
//
//
// linearLayout = (LinearLayout) layoutInflater.inflate(
// R.layout.test, null);
// //布局填充器使用R.layout.test并返回使用填充器的布局
// TextView textView = ((TextView) linearLayout
// .findViewById(R.id.t_tx1));
// textView.setText(String.valueOf(list.get(position)));
//

TextView w=new TextView(ct);
w.setText(String.valueOf(list.get(position)));

return w;
}

}
getView中肯定要返回一个view

一、如果想使用布局文件的东西[R.layout.xxxx]

简单的说 通过布局文件填充器把布局文件转换成view

就需要使用到layoutInflater:布局填充器
layoutInflater需要从系统服务中获取
// LayoutInflater layoutInflater = (LayoutInflater) ct
// .getSystemService(inflater);

获取之后再通过layoutInflater的inflate方法 把所要用的布局填充进去。此方法返回填充的view[也就是填充的布局文件的view]。把此view强转成自己要用的。
然后对此view操作。
最后返回此view。

二、如果不使用布局文件
则直接创建相应的view 然后返回该对象即可。

注意:列表项的view 一定要在getView方法中创建。



2011-9-23
poolo
分享到:
评论

相关推荐

    Android应用源码之drag-sort-listview-master.rar

    通过研究`drag-sort-listview-master`的源码,开发者不仅可以学习到拖放排序的实现,还可以深入了解Android ListView的工作原理,以及如何优雅地处理触摸事件和视图更新。这对于提升个人的Android开发技能,特别是...

    pinned-section-listview-master

    标题 "pinned-section-listview-master" 指的是一款仿照MIUI7文件管理器中“最近”功能的ListView实现,它特别强调了在ListView头部存在可以固定的分类。这个项目可能是一个开源Android开发示例,旨在帮助开发者创建...

    Android-react-native-timeline-listview.zip

    Android-react-native-timeline-listview.zip,React本机应用程序的时间线组件,安卓系统是谷歌在2008年设计和制造的。操作系统主要写在爪哇,C和C 的核心组件。它是在linux内核之上构建的,具有安全性优势。

    Android实现的ListView-ListViewAdapter(新闻列表事例)

    在这个“Android实现的ListView-ListViewAdapter(新闻列表事例)”中,我们将探讨如何利用ListView和ListViewAdapter来构建一个新闻列表,具体涵盖以下几个关键知识点: 1. **ListView**: ListView是Android SDK中的...

    Android代码-Animated-Expanding-ListView

    It works in all version of Android and it's very easy to adapt to your project. How to use with Gradle Simply add the repository to your build.gradle file: repositories { jcenter() maven { url '...

    drag-sort-listview

    在"drag-sort-listview-master"这个压缩包中,你应该能找到项目的源代码、示例应用、README文件以及如何集成和使用的详细说明。通过研究这些内容,你可以深入理解该库的工作原理,并根据项目需求进行定制。对于希望...

    Android代码-AdapterDelegates-ListView

    AdapterDelegates-ListView Based on https://github.com/sockeqwe/AdapterDelegates." Favor composition over inheritance" for ListView Features Composable view handling on ListView Plugable data handler ...

    21.[开源][安卓][拖拽]drag-sort-listview-master

    21.[开源][安卓][拖拽]drag-sort-listview-master DragSortListView(DSLV)是Android ListView的一个扩展,支持拖拽排序和左右滑动删除功能。重写了TouchInterceptor(TI)类来提供更加优美的拖拽动画效果。 DSLV...

    Android--开发-- ListView下拉刷新 Demo.rar

    在Android应用开发中,ListView是常用的控件,用于展示大量数据列表。然而,为了提供更好的用户体验,许多应用都需要实现ListView的下拉刷新功能,让用户能够即时获取最新的数据。本示例"Android--开发-- ListView...

    Android高级应用源码-ListView&时间轴.zip

    《深入解析Android高级应用:ListView与时间轴》 在Android应用开发中,ListView与时间轴是两种常见的界面展示组件,它们在数据展示和用户交互方面起着至关重要的作用。本资料包“Android高级应用源码-ListView&...

    Android--开发--ListView 中的item随意拖动.rar

    在Android应用开发中,ListView是常用的控件,用于展示可滚动的列表数据。然而,标准的ListView仅仅提供了基本的滑动浏览功能,如果需要实现更高级的交互,比如让用户能够自由拖动ListView中的item(列表项),则...

    Android--开发--ListView 实现点击侧边A-Z快速查找.rar

    在Android应用开发中,ListView是常用的视图组件,它用于展示大量的列表数据。这个压缩包文件"Android--开发--ListView 实现点击侧边A-Z快速查找.rar"显然包含了一个示例,展示了如何在ListView中实现点击侧边字母...

    android--ListView下拉刷新demo

    在Android开发中,ListView是一种常见的组件,用于展示大量的列表数据。`ListView`的下拉刷新功能是提升用户体验的重要特性,特别是在处理动态加载数据的应用场景中。这个“android--ListView下拉刷新demo”就是一个...

    Android高级应用源码-listview快速滑动,修改默认的滑动条.zip

    在Android开发中,ListView是常用的一种控件,用于展示大量数据列表。本资源"Android高级应用源码-listview快速滑动,修改默认的滑动条.zip"主要关注两个关键点:ListView的快速滑动优化以及自定义滚动条的实现。这...

    Android高级应用源码-listview下拉刷新加载更多.rar

    在Android开发中,ListView是一种非常常见的控件,用于展示大量数据列表。本资源"Android高级应用源码-listview下拉刷新加载更多.rar"提供了一个关于ListView实现下拉刷新和加载更多的示例源码,这对于开发者来说是...

    Android高级应用源码-listview 适配器 优化 重用.zip

    在Android开发中,ListView是广泛使用的控件,用于展示大量数据列表。本资源"Android高级应用源码-listview 适配器 优化 重用.zip"聚焦于ListView的高级使用,包括适配器(Adapter)的实现、性能优化以及项(Item)...

    Android高级应用源码-listView下拉刷新上拉刷新带阻尼效果.zip

    标题中的"Android高级应用源码-listView下拉刷新上拉刷新带阻尼效果.zip"指的是一个Android应用程序,它实现了ListView组件的高级功能,包括下拉刷新(Pull-to-Refresh)和上拉加载更多(Load-more)操作,并且具有...

    Android图片异步加载-ListView、GridView、ViewPager

    在Android应用开发中,图片加载是一项重要的任务,尤其是在ListView、GridView和ViewPager等组件中,大量图片的展示可能会导致性能问题,比如应用卡顿或者内存溢出。为了优化用户体验,开发者通常会采用异步加载策略...

    android-pulltorefresh-listview

    《Android下拉刷新ListView详解——基于android-pulltorefresh库》 在移动应用开发中,用户界面的交互性与用户体验至关重要。其中,下拉刷新功能已成为许多Android应用的标准特性,尤其是在显示列表数据的场景中。`...

    android-pulltorefresh-listview 下拉刷新ListView

    `android-pulltorefresh-listview`是一个专为ListView实现下拉刷新效果的开源库。这个库使得开发者能够轻松地将下拉刷新功能集成到他们的应用中,提高了用户体验。 首先,我们来看看`ListView`。ListView是Android ...

Global site tag (gtag.js) - Google Analytics