(一)

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(下)自定义适配器的更多相关文章

  1. 细解ListView之自定义适配器

    下面我们将以一个例子来讲述ListView之自定义适配器 首先我们看一下效果图: [分析] 首先:需要创建一个ListView控件,自定义适配器是为了实现自定义ListView的ListView_It ...

  2. ListView使用自定义适配器的情况下实现适配器的文本和图标控件点击事件执行Activity界面中的方法

    ListView使用的是自定义适配器,列表项的布局文件中含有文本和图标,实现文本区域和图标区域的点击事件. 实现思路:在自定义适配器MyArrayAdapter 类型中自定义接口和接口方法,分别设置文 ...

  3. ListView使用自定义适配器的情况下实现适配器的控件点击事件执行Activity界面中的方法

    如果ListView使用的是自定义的适配器,比如MyArrayAdapter extends ArrayAdapter<String> 那么,如何实现适配器中的点击事件执行activity ...

  4. ListView的自定义适配器及其优化(listView序号混乱问题的处理)

    ListView是最常使用的android组件之一,关于listView的优化问题刚刚了解了一些,在这里做出总结. PS:如果想让ListView中的item根据数据内容显示item的大小,需要在it ...

  5. Android -- ListView(SimpleAdapter) 自定义适配器

    aaarticlea/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA ...

  6. 安卓开发_浅谈ListView(自定义适配器)

    ListView作为一个实际开发中使用率非常高的视图,一般的系统自带的适配器都无法满足开发中的需求,这时候就需要开发人员来自定义适配器使得ListView能够有一个不错的显示效果 有这样一个Demo ...

  7. (转)Android之自定义适配器

    ListView作为一个实际开发中使用率非常高的视图,一般的系统自带的适配器都无法满足开发中的需求,这时候就需要开发人员来自定义适配器使得ListView能够有一个不错的显示效果. 有这样一个Demo ...

  8. 无废话Android之listview入门,自定义的数据适配器、采用layoutInflater打气筒创建一个view对象、常用数据适配器ArrayAdapter、SimpleAdapter、使用ContentProvider(内容提供者)共享数据、短信的备份、插入一条记录到系统短信应用(3)

    1.listview入门,自定义的数据适配器 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/and ...

  9. 自定义ListView下拉刷新上拉加载更多

    自定义ListView下拉刷新上拉加载更多 自定义RecyclerView下拉刷新上拉加载更多 Listview现在用的很少了,基本都是使用Recycleview,但是不得不说Listview具有划时 ...

随机推荐

  1. elk,centos7,filebeat,elasticsearch-head详细安装步骤

    先来张图,大致结构应该晓得,对吧! 安装jdk:至少1.8以上 yum -y localinstall jdk-8u73-linux-x64.rpm 安装elasticsearch5.2.1 用普通用 ...

  2. 用eval转化对象

    var str = '{"name": "tom","age": 12,"sex": "man"}' ...

  3. bootstrap再次回顾认识到的东西

    1,需要使用html5文档类型(Doctype),因此在使用bootstrap项目的开头包含下面的代码段. <!DOCTYPE html> <html> ....... < ...

  4. Spring - IoC(12): 属性占位符

    使用属性占位符可以将 Spring 配置文件中的部分元数据放在属性文件中设置,这样可以将相似的配置(如 JDBC 的参数配置)放在特定的属性文件中,如果只需要修改这部分配置,则无需修改 Spring ...

  5. kickstart构建Live CD 添加文件问题

    在构建自定义ISO的时候,有时候需要从母体机器拷贝文件到Live CD系统.比如拷贝/home/xiaoxiaoleo/hello 程序,在Kickstart配置文件里, post脚本添加--noch ...

  6. Swift, Playgrounds, and XCPlayground

    http://www.codeschool.com/blog/2014/12/12/swift-playgrounds-xcplayground/ Swift, Playgrounds, and XC ...

  7. [ Python - 8 ] 简单demo练习

    练习1: 利用os模块编写一个能实现dir -l输出的程序(注意:dir /l是windows下命令) #!_*_coding:utf-8_*_ # Author: hkey import os, t ...

  8. 【 Zabbix 】 — 基础安装

    一.基础环境 (1)centos6.7 x64 (2)JDK1.8 and zabbix-2.4.8(JDK是为了后期可以监控tomcat) (3)虚拟机测试环境 二.安装LAMP环境 这里为了快速搭 ...

  9. 肢解 HTTP 服务器构建

    更好阅读请戳 这里 1. 最简单的 http 服务器 // server.js var http = require("http"); http.createServer(func ...

  10. --a和a--

    编程很纠结的一个问题便是a--和--a. #include<iostream> using namespace std; int main(int argc, char const *ar ...