android ListView几种使用
来源:互联网 发布:四选一数据选择器 编辑:程序博客网 时间:2024/04/29 20:12
1、最简单的使用
listview = (ListView)findViewById(R.id.list);listview.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,getData()));添加数据的方法:
private List<String> getData1(){List<String> data = new ArrayList<String>();for(int i=0;i<10;i++){data.add("测试时"+i);}return data;}2、使用SimpleAdapter可自定义布局,添加各种控件
SimpleAdapter sim = new SimpleAdapter(getApplicationContext(), getData(), R.layout.customlist,new String[]{"img","title","info"},new int[]{R.id.img,R.id.title,R.id.info});listview.setAdapter(sim);添加数据方法:
private List<Map<String, Object>> getData() { List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); Map<String, Object> map; for(int i=0;i<20;i++) { map = new HashMap<String, Object>(); map.put("img", R.drawable.ic_launcher); map.put("title", "xingixng"); map.put("info", "海贼王、龙珠超。。。。"); list.add(map); } return list; }
布局代码:
<?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="horizontal" > <ImageView android:id="@+id/img" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="5sp"/> <LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content"><TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="22sp" /> <TextView android:id="@+id/info" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="13sp" /> </LinearLayout></LinearLayout>3、使用BaseAdapter适配器,item里面的自定义布局代码同上
data = getData(); MyAdapter adapter = new MyAdapter(this);listview.setAdapter(adapter);通过继承BaseAdapter代码实现
public class MyAdapter extends BaseAdapter { private LayoutInflater mInflater = null; private MyAdapter(Context context) { //根据context上下文加载布局,这里的是Demo17Activity本身,即this this.mInflater = LayoutInflater.from(context); } @Override public int getCount() { //How many items are in the data set represented by this Adapter. //在此适配器中所代表的数据集中的条目数 return data.size(); } @Override public Object getItem(int position) { // Get the data item associated with the specified position in the data set. //获取数据集中与指定索引对应的数据项 return position; } @Override public long getItemId(int position) { //Get the row id associated with the specified position in the list. //获取在列表中与指定索引对应的行id return position; } //Get a View that displays the data at the specified position in the data set. //获取一个在数据集中指定索引的视图来显示数据 @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; //如果缓存convertView为空,则需要创建View if(convertView == null) { holder = new ViewHolder(); //根据自定义的Item布局加载布局 convertView = mInflater.inflate(R.layout.customlist, null); holder.img = (ImageView)convertView.findViewById(R.id.img); holder.title = (TextView)convertView.findViewById(R.id.title); holder.info = (TextView)convertView.findViewById(R.id.info); //将设置好的布局保存到缓存中,并将其设置在Tag里,以便后面方便取出Tag convertView.setTag(holder); }else { holder = (ViewHolder)convertView.getTag(); } holder.img.setBackgroundResource((Integer)data.get(position).get("img")); holder.title.setText((String)data.get(position).get("title")); holder.info.setText((String)data.get(position).get("info")); return convertView; } } //ViewHolder静态类 static class ViewHolder { public ImageView img; public TextView title; public TextView info; }所有代码:
package com.example.listview;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.os.Bundle;import android.app.Activity;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.ListView;import android.widget.SimpleAdapter;import android.widget.TextView;public class MainActivity extends Activity {private ListView listview;private List<Map<String,Object>> data;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);listview = (ListView)findViewById(R.id.list);//listview.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,getData()));//data = getData(); //MyAdapter adapter = new MyAdapter(this);//listview.setAdapter(adapter);SimpleAdapter sim = new SimpleAdapter(getApplicationContext(), getData(), R.layout.customlist,new String[]{"img","title","info"},new int[]{R.id.img,R.id.title,R.id.info});listview.setAdapter(sim);}private List<String> getData1(){List<String> data = new ArrayList<String>();for(int i=0;i<10;i++){data.add("测试时"+i);}return data;}private List<Map<String, Object>> getData() { List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); Map<String, Object> map; for(int i=0;i<10;i++) { map = new HashMap<String, Object>(); map.put("img", R.drawable.ic_launcher); map.put("title", "xingixng"); map.put("info", "海贼王、龙珠超。。。。"); list.add(map); } return list; } public class MyAdapter extends BaseAdapter { private LayoutInflater mInflater = null; private MyAdapter(Context context) { //根据context上下文加载布局,这里的是Demo17Activity本身,即this this.mInflater = LayoutInflater.from(context); } @Override public int getCount() { //How many items are in the data set represented by this Adapter. //在此适配器中所代表的数据集中的条目数 return data.size(); } @Override public Object getItem(int position) { // Get the data item associated with the specified position in the data set. //获取数据集中与指定索引对应的数据项 return position; } @Override public long getItemId(int position) { //Get the row id associated with the specified position in the list. //获取在列表中与指定索引对应的行id return position; } //Get a View that displays the data at the specified position in the data set. //获取一个在数据集中指定索引的视图来显示数据 @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; //如果缓存convertView为空,则需要创建View if(convertView == null) { holder = new ViewHolder(); //根据自定义的Item布局加载布局 convertView = mInflater.inflate(R.layout.customlist, null); holder.img = (ImageView)convertView.findViewById(R.id.img); holder.title = (TextView)convertView.findViewById(R.id.title); holder.info = (TextView)convertView.findViewById(R.id.info); //将设置好的布局保存到缓存中,并将其设置在Tag里,以便后面方便取出Tag convertView.setTag(holder); }else { holder = (ViewHolder)convertView.getTag(); } holder.img.setBackgroundResource((Integer)data.get(position).get("img")); holder.title.setText((String)data.get(position).get("title")); holder.info.setText((String)data.get(position).get("info")); return convertView; } } //ViewHolder静态类 static class ViewHolder { public ImageView img; public TextView title; public TextView info; } }main.xml布局代码:
<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" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <ListView android:id="@+id/list" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" /></RelativeLayout>
0 0
- android ListView几种使用
- android 几种listview的整理
- android ListView几种重要属性
- Android ListView几种Adapter用法简介
- android--关于listView使用的几点建议
- Android ScrollView与ListView一起(嵌套)使用解决ListView自动滚动的几点方案
- android学习之-Listview的几种问题
- android listview优化几种写法详细介绍
- Android 实现圆角ListView 几种方法
- android listview优化几种写法详细介绍
- android listview 优化几种写法详细介绍
- android listview优化几种写法详细介绍
- Android listview优化几种写法详细介绍
- android listview优化几种写法详细介绍
- Android中ListView的几种常见的优化方法
- android listview优化几种写法详细介绍
- Android—Listview优化的几种方法
- android listview优化几种写法详细介绍
- STL空间配置器
- android中的文件操作详解以及内部存储和外部存储
- Flex发家
- HDU 4548 美素数
- 洗牌(2)
- android ListView几种使用
- PAP认证和CHAP认证概述
- linux基础(34)--REHL7基本配置--RHEL7
- java基础语法
- ios 图片尺寸的等比压缩
- 基本原则
- yum安装vim冲突解决
- 终于等到你---订餐系统之负载均衡(nginx+memcached+ftp上传图片+iis)
- /bin/sh^M: bad interpreter