Android学习之ListView使用基础
1、ListView的简单用法
1.1 布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="match_parent">
</ListView>
</LinearLayout>
1.2 代码
public class MainActivity extends Activity {
private String[] data={"One","Two","Three","Four","Five","Six","Seven","Eight","Nine"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ArrayAdapter<String> adapter=new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1,data);
ListView listView=(ListView)findViewById(R.id.listView1);
listView.setAdapter(adapter);
//处理点击事件
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
String string=data[arg2];
Toast.makeText(MainActivity.this, string, Toast.LENGTH_SHORT).show();
}
});
}
}
2、定制ListView的界面
2.1 新建MyData类,作为ListView适配器的适配类型
public class MyData{
private String dataString;
private int imageId;
public MyData(String dataString,int imageId) {
// TODO Auto-generated constructor stub
this.dataString=dataString;
this.imageId=imageId;
}
public String getDataString() {
return dataString;
}
public int getImageId() {
return imageId;
}
}
2.2 为ListView子项指定自定义布局mydata_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" >
<ImageView
android:id="@+id/myDataImage"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</ImageView>
<TextView
android:id="@+id/myDataString"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dip"
android:gravity="center" />
</LinearLayout>
2.3 自定义适配器类
public class MyDataAdapter extends ArrayAdapter<MyData>{
private int resourceId;
public MyDataAdapter(Context context,int textViewResourceId,List<MyData> objects){
super(context, textViewResourceId,objects);
resourceId=textViewResourceId;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
MyData data=getItem(position);
View view;
if(convertView==null){
view=LayoutInflater.from(getContext()).inflate(resourceId, null);
}
else {
view=convertView;
}
ImageView dataImageView=(ImageView)view.findViewById(R.id.myDataImage);
TextView dataStringTextView=(TextView)view.findViewById(R.id.myDataString);
dataImageView.setImageResource(data.getImageId());
dataStringTextView.setText(data.getDataString());
return view;
}
}
2.4 修改MainActivity代码
public class MainActivity extends Activity {
private List<MyData> dataList=new ArrayList<MyData>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initData();
MyDataAdapter adapter=new MyDataAdapter(MainActivity.this, R.layout.mydata_item, dataList);
ListView listView=(ListView)findViewById(R.id.listView1);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
MyData data=dataList.get(arg2);
Toast.makeText(MainActivity.this, data.getDataString(), Toast.LENGTH_SHORT).show();
}
});
}
private void initData() {
// TODO Auto-generated method stub
MyData one=new MyData("one", R.drawable.one);
MyData two=new MyData("two", R.drawable.two);
MyData three=new MyData("three", R.drawable.three);
MyData four=new MyData("four", R.drawable.four);
MyData five=new MyData("five", R.drawable.five);
MyData six=new MyData("six", R.drawable.six);
MyData seven=new MyData("seven", R.drawable.seven);
MyData eight=new MyData("eight", R.drawable.eight);
MyData nine=new MyData("nine", R.drawable.nine);
dataList.add(one);
dataList.add(two);
dataList.add(three);
dataList.add(four);
dataList.add(five);
dataList.add(six);
dataList.add(seven);
dataList.add(eight);
dataList.add(nine);
}
@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;
}
}
Android学习之ListView使用基础的更多相关文章
- Android学习随笔--ListView的分页功能
第一次写博客,可能格式,排版什么的会非常不美观,不过我主要是为了记录自己的Android学习之路,为了以后能有些东西回顾.既然是为了学习,那我肯定会吸收各位大大们的知道经验,有不足的地方请指出. 通过 ...
- Android学习笔记-listview实现方式之BaseAdapter
listview是Android开发中最为常用的组件,这里我们就学习一下用BaseAdapter的方式实现listview, 主布局activity_main.xml是这样的: <LinearL ...
- Android学习笔记——ListView
该工程的功能是实现在一个activity中显示一个列表 以下代码是MainActivity.java中的代码 package com.example.listview; import java.uti ...
- Android学习之——ListView
背景知识 ListView在Android应用中使用非常广泛,手机上必备的微博.网易新闻等,都使用了ListView.
- 学习android学习必备的java基础知识--四大内部类
学习android必备的java基础知识--四大内部类 今天学习android课程,因为我的主专业是JAVA,但是兴趣班却有这其他专业的同学,学习android 需要具备一些java的基础知识,因此就 ...
- Android学习之listview的下拉刷新、上拉载入
本例是在上例的基础上完成的.本例实现的listview上拉载入.下拉刷新功能,是在开源网站上别人写好的listview,主要是对listview的控件进行重写,添加了footer和header. 1. ...
- Android学习之——ListView下拉刷新
背景知识 ListView使用非常广泛,对于使用ListView的应用来说,下拉刷新是必不可少要实现的功能. 我们常用的微博.网易新闻,搜狐新闻都使用了这一功能,如下图所示. 微博 搜狐新闻 ...
- [Android学习笔记]ListView中含有Button导致无法响应onItemClick回调的解决办法
转自:http://www.cnblogs.com/eyu8874521/archive/2012/10/17/2727882.html 问题描述: 当ListView的Item中的控件只是一些展示类 ...
- android学习之ListView
移通152余继彪 该组件用于显示列表的view 包含了三个关键元素 listView 适配器 以及数据,适配器主要是用于将数据映射到listview,适配器数据主要是有hasmap 配合list对每 ...
随机推荐
- 两条命令在Linux主机之间建立信任关系
ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa //生成当前用户密钥 ssh-copy-id -i /root/.ssh/id_rsa.pub r ...
- Android 开发日常积累
Android 集合 Android 开源项目分类汇总 扔物线的 HenCoder 高级 Android 教程 hencoder HenCoder:给高级 Android 工程师的进阶手册 Andro ...
- cannot send list of active checks to [ZabbixServerIp]: host [Zabbix server] not found
解决办法 因为web端上被监控端的主机名和zabbix_agentd.conf中的Hostname名字不一样,改为一样的即可 注意发现问题一定要看日志: tail -f /var/log/zabbix ...
- android开发图片分辨率
一直受到android开发图片分辨率问题困扰.drawable-(xdpi,hdpi,mdpi,ldpi,nodpi)这几个文件夹到底怎么放图片呢? dpi是什么呢? dpi是“dot per inc ...
- DIOCP开源项目-DIOCP3的ECHO测试<贴图>
星期六开了测试台测试机子.星期天休息,今天早上来接两个图 开了2个客户端,一个qsl的echo client,一个是楠楠的dbiocp回调客户端.建立13240个连接 今天来后,机子很卡,后来发现是楠 ...
- maven 使用记录之修改 maven默认jdk版本
maven package执行的时候会遇到jdk版本不对的问题 :原因是 maven所指定的jdk版本与项目使用的jdk版本不一致 1.项目属性的 java compiler可以设置 2.直接修改 m ...
- Java后台测试技巧
[本文出自天外归云的博客园] 问题 很多测试是和后台代码逻辑相关的,比如: 接口测试 接口文档里面包含了接口的url.用途.一些上行参数和下行参数的描述信息. 但是要想知道这些参数取值的来龙去脉,还是 ...
- java基础篇---内存分析
Java的并发采用的是共享内存模型(而非消息传递模型),线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信.多个线程之间是不能直接传递数据交互的,它们之间的交互只能通过共享变 ...
- Linux下 jenkins的安装
自动代码部署的 jenkins 安装, 第一步,从网上下载jenkins的war包 http://mirrors.jenkins.io/war/2.46/ 第二步:复制到tomcat的编译目录下去编译 ...
- 元组(Tuple)
元组(Tuple) 笛卡尔积中每一个元素(d1,d2,…,dn)叫作一个n元组(n-tuple)或简称元组. 元组是关系数据库中的基本概念,关系是一张表,表中的每行(即数据库中的每条记录)就是一个元组 ...