Android ListView 列表视图
列表显示的三个元素
ListView : 用来显示列表的View
Adapter : 适配器 用来把数据映射到ListView 上的中介
Data: 数据 将被映射的字符串,图片或者基本组件等资源
根据列表的适配器类型 可分为三种: ArrayAdapter, SimpleAdapter ,SimpleCursorAdapter .
ArrayAdapter 最简单 ,只能显示一行字
SimpleAdapter 扩充性好,可以自定义各种效果 ,
SimpleCursorAdapter 可以认为是对数据库的简单结合,可以把数据库的内容以列表的形式显示出来.
ArrayAdapter适配器 简单实例:
package com.app.listviewtest; import java.util.ArrayList;
import java.util.List; import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast; public class MainActivity extends Activity {
//创建ListView 对象
private ListView mListView ;
//添加数据
List<Object> data;
private List getData(){
data = new ArrayList<Object>();
data.add("Java");
data.add("android");
data.add("c");
data.add("c++");
return data;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mListView = new ListView(this);//获得组件
//设置适配器
mListView.setAdapter(new ArrayAdapter<Object>(this,android.R.layout.simple_expandable_list_item_1,getData()));
//设置布局 显示listView
setContentView(mListView); mListView.setOnItemClickListener( new AdapterView.OnItemClickListener() { @Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
String text =data.get(position).toString();
switch (position) { case 0 :
Toast.makeText(getApplicationContext(),text+"被点击" , 0).show();
break;
case 1 :
Toast.makeText(getApplicationContext(),text+"被点击" , 0).show();
break;
case 2 :
Toast.makeText(getApplicationContext(),text+"被点击" , 0).show();
break;
case 3 :
Toast.makeText(getApplicationContext(),text+"被点击" , 0).show();
break; default :
break;
}
}
});
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
} }
SimpleAdapter 的简单使用:
布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" > <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" > <ImageView
android:id="@+id/ImageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/TextView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
</LinearLayout>
Java文件:
package com.app.listviewtest; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import android.app.ListActivity;
import android.os.Bundle;
import android.view.Window;
import android.widget.SimpleAdapter; public class simpleAdapterActivity extends ListActivity {
//数据源
private List<Map<String,Object>> getData(){
List <Map<String,Object>> list = new ArrayList<Map<String,Object>>();
Map<String,Object> map = new HashMap<String, Object>();
map.put("ImageView1", R.drawable.ic_launcher);
map.put("TextView1", "图片一");
list.add(map);
map = new HashMap<String, Object>();
map.put("ImageView1", R.drawable.ic_launcher);
map.put("TextView1", "图片二");
list.add(map);
map = new HashMap<String, Object>();
map.put("ImageView1", R.drawable.ic_launcher);
map.put("TextView1", "图片3");
list.add(map);
map = new HashMap<String, Object>();
map.put("ImageView1", R.drawable.ic_launcher);
map.put("TextView1", "图片4");
list.add(map);
return list;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//隐藏标题
requestWindowFeature(Window.FEATURE_NO_TITLE);
//设置 适配器 (上下文,数据,模板的资源ID,组件对应的资源,xml布局文件中组件的id)
//public SimpleAdapter(Context context, List<? extends Map<String, ?>> data,int resource, String[] from, int[] to) {}
SimpleAdapter adapter = new SimpleAdapter(getApplicationContext(), getData(),
R.layout.simpleadapter_activity,new String[]{"ImageView1","TextView1"},
new int[] {R.id.ImageView1,R.id.TextView1});
setListAdapter(adapter);
}
}
Android ListView 列表视图的更多相关文章
- Android之怎样使用ListView列表视图
ListView 列表视图创建方法: (1)直接使用ListView 组件创建 (2)让Activity继承ListActivity实现 第一种:在XML中直接使用ListView 组件创建 在val ...
- Android ListView列表控件的简单使用
ListView 列表是我们经常会使用的控件, 如果想要自定义里面的显示的话是挺麻烦的, 需要新建XML.Class SimpleAdapter这两个文件, 较为麻烦. 如果我们只是想显示两.三行文字 ...
- Android课程---优化ListView列表视图(2)
layout_simple.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout ...
- Android课程---优化ListView列表视图
activity_ui4.xml <?xml version="1.0" encoding="utf-8"?> <ListView xmlns ...
- Android课程---关于ListView列表视图的学习
activity_ui3.xml <?xml version="1.0" encoding="utf-8"?> <ListView xmlns ...
- Android中通过数组资源文件xml与适配器两种方式给ListView列表视图设置数据源
场景 实现效果如下 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 将布局改 ...
- android listview多视图嵌套多视图
笔记,listview视图总结 public class HomeEduMoreAdapter extends BaseAdapter { private final String TAG = &qu ...
- 第二章实例:ArrayAdapter结合ListView列表视图
package mydefault.packge; import com.example.codeview.R; import android.app.Activity; import android ...
- Qt qml listview 列表视图控件(下拉刷新、上拉分页、滚动轴)
Qt qml listview下拉刷新和上拉分页主要根据contentY来判断.但要加上顶部下拉指示器.滚动条,并封装成可简单调用的组件,着实花了我不少精力:) [先看效果] [功能] 下拉刷新 ...
随机推荐
- 关于 CSLA 服务器部署WCF访问出错的问题
MDAA项目 在以前的项目中,只要部署,从来没有发生过 通过WCF访问出错的问题,但是此次却出现如下问题: 2018-04-21 13:45:39,744 [119] ERROR Galaxy.OTC ...
- [Spark][python]RDD的collect 作用是什么?
[Spark][Python]sortByKey 例子的继续 RDD的collect() 作用是什么? “[Spark][Python]sortByKey 例子”的继续 In [20]: mydata ...
- sqli-labs less 5-6
sqli-labs less 5-6 从源代码中可以看到,运行返回结果正确的时候只返回you are in....,不会返回数据库当中的信息了,以前的union联合查询就不能用了,开始尝试盲注. 简单 ...
- Ceph分布式存储集群-硬件选择
在规划Ceph分布式存储集群环境的时候,对硬件的选择很重要,这关乎整个Ceph集群的性能,下面梳理到一些硬件的选择标准,可供参考: 1)CPU选择Ceph metadata server会动态的重新分 ...
- 个人作业week7——前端开发感想总结
个人作业week7——前端开发感想总结 1. 反思 首先要谈谈在这次团队项目的工作中,我这边出现过的较为严重的一个问题:我和HoerWing (后端担当)合作时,最初因为我没有使用github(始终连 ...
- Linux内核及分析 第二周 操作系统是如何工作的?
计算机是如何工作的? 存储程序计算机工作模型,计算机系统最最基础性的逻辑结构: 函数调用堆栈,高级语言得以运行的基础,只有机器语言和汇编语言的时候堆栈机制对于计算机来说并不那么重要,但有了高级语言及函 ...
- 20135327郭皓--Linux内核分析第八周 进程的切换和系统的一般执行过程
第八周 进程的切换和系统的一般执行过程 一.进程切换的关键代码switch_to分析 1.进程调度与进程调度的时机分析 不同类型的进程有不同的调度需求 第一种分类: I/O-bound:频繁进行I/O ...
- What’s for Beta
经过和Travis与Zhongqiu讨论,我们希望我们发布的Beta版本会支持如下内容: Naïve long-term plan UI (Useable) Naïve long-term plan ...
- 素数问题练习_HDOJ1262
HDOJ1262_寻找素数对 和上一篇博客一样的解法,将10000以内的所有素数求出即可解题. #include<stdio.h> #include<stdlib.h> #in ...
- 『编程题全队』Beta 阶段冲刺博客四
1.提供当天站立式会议照片一张 2.每个人的工作 (有work item 的ID) (1) 昨天已完成的工作 孙志威: 1.新增添加提醒事项的按钮 2.添加了新建提醒框 3.测试了新的SubTask思 ...