ListView(下)自定义适配器
(一)
1.效果图

2.activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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="com.example.app2.MainActivity"> <ListView
android:id="@+id/lv"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
3.MianActivity.java
package com.example.app2; import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView; import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List; public class MainActivity extends AppCompatActivity {
private ListView listView;
private List<Student>list;
private Student student;
private MyAdapter myAdapter; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView) findViewById(R.id.lv); //新建数据源
list = new ArrayList<>();
for (int i=0;i<20;i++){
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
String time = simpleDateFormat.format(System.currentTimeMillis());
student = new Student();
student.setStuName("张三"+i);
student.setStuNum("201503"+i);
student.setTime(time);
list.add(student); } //新建适配器,适配器绑定数据
myAdapter = new MyAdapter(MainActivity.this,list); //视图加载适配器
listView.setAdapter(myAdapter); }
}
3.Studen.java(Alt+insert快捷键提示构造方法等)

package com.example.app2; /**
* Created by Administrator on 2018/5/16.
*/
public class Student {
private String stuName;
private String stuNum;
private String time; public String getStuNum() {
return stuNum;
} public void setStuNum(String stuNum) {
this.stuNum = stuNum;
} public String getStuName() {
return stuName;
} public void setStuName(String stuName) {
this.stuName = stuName;
} public String getTime() {
return time;
} public void setTime(String time) {
this.time = time;
}
}
4.自定义适配器MyAdapter.java

package com.example.app2; import android.content.Context;
import android.view.LayoutInflater;
import android.view.TextureView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView; import java.util.List; /**
* Created by Administrator on 2018/5/16.
*/
public class MyAdapter extends BaseAdapter {
private Context context;
private List<Student> list; public MyAdapter(Context context, List<Student> list) {
this.context = context;
this.list = list;
} @Override
public int getCount() {
return list.size();
} @Override
public Object getItem(int position) {
return list.get(position);
} @Override
public long getItemId(int position) {
return position;
} @Override
public View getView(int position, View convertView, ViewGroup parent) {
convertView = LayoutInflater.from(context).inflate(R.layout.item,null);
// 获取控件
ImageView imageView = (ImageView)convertView.findViewById(R.id.iv);
TextView tv_name = (TextView)convertView.findViewById(R.id.tv_name);
TextView tv_num = (TextView)convertView.findViewById(R.id.tv_num);
TextView tv_time = (TextView)convertView.findViewById(R.id.tv_time); Student student = list.get(position);
imageView.setImageResource(R.mipmap.ic_launcher);
tv_name.setText(student.getStuName());
tv_num.setText(student.getStuNum());
tv_time.setText(student.getTime()); return convertView;
}
}
5.自定义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"
android:orientation="horizontal">
<ImageView
android:id="@+id/iv"
android:background="@mipmap/ic_launcher"
android:layout_width="100dp"
android:layout_height="100dp" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_marginTop="10dp"
android:layout_marginLeft="20dp"
android:textSize="20dp"
android:id="@+id/tv_name"
android:layout_width="100dp"
android:layout_height="50dp" />
<TextView
android:layout_marginLeft="20dp"
android:textSize="20dp"
android:id="@+id/tv_num"
android:layout_width="100dp"
android:layout_height="30dp" />
</LinearLayout>
<TextView
android:id="@+id/tv_time"
android:layout_marginTop="30dp"
android:textSize="20dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
另:优化后的MyAdapter.java
package com.example.app2; import android.content.Context;
import android.view.LayoutInflater;
import android.view.TextureView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView; import java.util.List; /**
* Created by Administrator on 2018/5/16.
*/
public class MyAdapter extends BaseAdapter {
private Context context;
private List<Student> list; public MyAdapter(Context context, List<Student> list) {
this.context = context;
this.list = list;
} @Override
public int getCount() {
return list.size();
} @Override
public Object getItem(int position) {
return list.get(position);
} @Override
public long getItemId(int position) {
return position;
} @Override
public View getView(int position, View convertView, ViewGroup parent) {
/* convertView = LayoutInflater.from(context).inflate(R.layout.item,null);
// 获取控件
ImageView imageView = (ImageView)convertView.findViewById(R.id.iv);
TextView tv_name = (TextView)convertView.findViewById(R.id.tv_name);
TextView tv_num = (TextView)convertView.findViewById(R.id.tv_num);
TextView tv_time = (TextView)convertView.findViewById(R.id.tv_time); Student student = list.get(position);
imageView.setImageResource(R.mipmap.ic_launcher);
tv_name.setText(student.getStuName());
tv_num.setText(student.getStuNum());
tv_time.setText(student.getTime());*/
ViewHolder viewHolder = null;
if(viewHolder==null){
viewHolder = new ViewHolder();
convertView = LayoutInflater.from(context).inflate(R.layout.item,null);
viewHolder.imageView = (ImageView)convertView.findViewById(R.id.iv);
viewHolder.tv_name = (TextView)convertView.findViewById(R.id.tv_name);
viewHolder.tv_num = (TextView)convertView.findViewById(R.id.tv_num);
viewHolder.tv_time = (TextView)convertView.findViewById(R.id.tv_time);
convertView.setTag(viewHolder); }else {
viewHolder=(ViewHolder)convertView.getTag();
}
Student student = list.get(position);
viewHolder.imageView.setImageResource(R.mipmap.ic_launcher);
viewHolder.tv_name.setText(student.getStuName());
viewHolder.tv_num.setText(student.getStuNum());
viewHolder.tv_time.setText(student.getTime()) ;
return convertView;
}
class ViewHolder{
ImageView imageView;
TextView tv_name ;
TextView tv_num ;
TextView tv_time ;
}
}
ListView(下)自定义适配器的更多相关文章
- 细解ListView之自定义适配器
下面我们将以一个例子来讲述ListView之自定义适配器 首先我们看一下效果图: [分析] 首先:需要创建一个ListView控件,自定义适配器是为了实现自定义ListView的ListView_It ...
- ListView使用自定义适配器的情况下实现适配器的文本和图标控件点击事件执行Activity界面中的方法
ListView使用的是自定义适配器,列表项的布局文件中含有文本和图标,实现文本区域和图标区域的点击事件. 实现思路:在自定义适配器MyArrayAdapter 类型中自定义接口和接口方法,分别设置文 ...
- ListView使用自定义适配器的情况下实现适配器的控件点击事件执行Activity界面中的方法
如果ListView使用的是自定义的适配器,比如MyArrayAdapter extends ArrayAdapter<String> 那么,如何实现适配器中的点击事件执行activity ...
- ListView的自定义适配器及其优化(listView序号混乱问题的处理)
ListView是最常使用的android组件之一,关于listView的优化问题刚刚了解了一些,在这里做出总结. PS:如果想让ListView中的item根据数据内容显示item的大小,需要在it ...
- Android -- ListView(SimpleAdapter) 自定义适配器
aaarticlea/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA ...
- 安卓开发_浅谈ListView(自定义适配器)
ListView作为一个实际开发中使用率非常高的视图,一般的系统自带的适配器都无法满足开发中的需求,这时候就需要开发人员来自定义适配器使得ListView能够有一个不错的显示效果 有这样一个Demo ...
- (转)Android之自定义适配器
ListView作为一个实际开发中使用率非常高的视图,一般的系统自带的适配器都无法满足开发中的需求,这时候就需要开发人员来自定义适配器使得ListView能够有一个不错的显示效果. 有这样一个Demo ...
- 无废话Android之listview入门,自定义的数据适配器、采用layoutInflater打气筒创建一个view对象、常用数据适配器ArrayAdapter、SimpleAdapter、使用ContentProvider(内容提供者)共享数据、短信的备份、插入一条记录到系统短信应用(3)
1.listview入门,自定义的数据适配器 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/and ...
- 自定义ListView下拉刷新上拉加载更多
自定义ListView下拉刷新上拉加载更多 自定义RecyclerView下拉刷新上拉加载更多 Listview现在用的很少了,基本都是使用Recycleview,但是不得不说Listview具有划时 ...
随机推荐
- VC++中编译C出错:error C2143: syntax error : missing ';' before 'type'
转摘自:http://preceo.blog.51cto.com/6225017/1130931 近来写程序时发现了一个问题,用 VC 编译 C语言是 总是提示一个错误:error C2143: sy ...
- java深入解析
具体内容安排如下: Java Collections Framework概览 对Java Collections Framework,以及Java语言特性做出基本介绍. Java ArrayList源 ...
- 【BZOJ2440】完全平方数 [莫比乌斯函数]
完全平方数 Time Limit: 10 Sec Memory Limit: 128 MB[Submit][Status][Discuss] Description 小X自幼就很喜欢数. 但奇怪的是 ...
- bzoj4886 [Lydsy2017年5月月赛]叠塔游戏
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=4886 [题解] 跟bzoj4883:http://www.cnblogs.com/galax ...
- [转载]C#用正则表达式 获取网页源代码标签的属性或值
最近调试程序需要用到获取网页指定标签的属性和值,找到了一个比较好的正则匹配方法,特此备份. [原]C#用正则表达式 获取网页源代码标签的属性或值 整理两个 在C#中,用正则表达式 获取网页源代码标签的 ...
- python 使用装饰器并记录log
1.首先定义一个log文件 # -*- coding: utf-8 -*- import os import time import logging import sys log_dir1=os.pa ...
- python清华大学镜像
pip安装的-i参数: https://pypi.tuna.tsinghua.edu.cn/simple conda 设置: conda config --add channels https://m ...
- 关于测试url传值的问题
url1:http://localhost:8080/fms/finan/isRiskCustomer.action?customername="xxxxxxxx"; 如上这样写, ...
- 【 Linux 】为lnmp架构添加memcached支持
一.首先搭建lnmp平台,这里不再演示.通过php页面来进行测试如下: [root@node1 ~]# vim /usr/local/nginx/html/info.php <?php $lin ...
- 【C++】各种成员变量
来自:黄邦勇帅 const 常量对象: 即把对象声明为常量,即 const hyong m,常量对象不能调用可能改变对象的值的函数,因此常量对象只能调用类中的 const 常量函数,因为不是 cons ...