(一)

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. 解读python小练习

    1.新建一个函数,判断是不是int 类型,并测试,不是抛出错误def adder(x, y):"""Return x + y if they are both integ ...

  2. java字符串 64位编码

    byte[] encodeBase64 = Base64.encodeBase64("到了是是是是".getBytes("UTF-8")); System.ou ...

  3. codechef T1 What's int the name

    NITIKA: 姓名本无意题目描述 Nitika 读了一本历史书,想要理清其中的人物关系.因此她要她的哥哥把书中出现的历史人 物全部列出来.哥哥把列好的人名给了 Nitika,但 Nitika 非常不 ...

  4. cobalt strike使用笔记

    启动: ./teamserver 192.168.74.1 admin #启动cs服务器.admin为密码. 监听器: windows/beacon_dns/reverse_dns_txtwindow ...

  5. LeetCode 192:Reverse Bits

    Reverse bits of a given 32 bits unsigned integer. For example, given input 43261596 (represented in ...

  6. KVM基本概念

    在kvm技术中,应用到的两个东西:qemu和kvm.其中kvm负责cpu虚拟化和内存虚拟化,但是kvm不能模拟其他设备,qemu是模拟IO设备(网卡,磁盘),kvm加上qemu之后就能实现真正意义上的 ...

  7. Linux环境下通过ODBC访问MSSql Server

    为了解决Linux系统连接MSSql Server的问题,微软为Linux系统提供了连接MSSql Server的ODBC官方驱动.通过官方驱动,Linux程序可以方便地对MSSql Server进行 ...

  8. python ajax post 数据

    简单的html <div> <input type="submit" id="tes" value="tes"> & ...

  9. 【SQL】使用调用层接口

    只记录C语言相关的,java相关的JDBC和PHP相关的都先跳过. C相关的也只是记录一下,这里面的语句我都不知道如何运行,在我的vs2010里面连头文件都找不到... 我觉得这里只是讲解了一下基本的 ...

  10. vue学习记录:vue引入,validator验证,数据信息,vuex数据共享

    最近在学习vue,关于学习过程中所遇到的问题进行记录,包含vue引入,validator验证,数据信息,vuex数据共享,传值问题记录 1.vue 引入vue vue的大致形式如下: <temp ...