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具有划时 ...
随机推荐
- Ecplise下设置jQuery和ExtJs自动提示
Spket 1.6.23下载: http://yunpan.cn/cjJYmEcMFIuuN 访问密码 5642 ext jsb下载:http://yunpan.cn/cjJYR7ZTzibQn ...
- Cannot read property 'resetFields' of undefined 问题及引申
问题描述: 使用element开发我的后台系统,编辑和新增使用了同一个弹出框<el-dialog><el-form></el-form></el-dialog ...
- DOM读取和修改节点对象属性
一.获取和修改元素间的内容(3种) 1.innerHTML 获得/设置元素开始标签和结束标签之间的html原文 固定套路:1.删除父元素下所有子元素:parent.innerHTML="&q ...
- Linux中实现一个简单的进度条【转】
转自:http://blog.csdn.net/yuehailin/article/details/53999288 说起进度条,其实大家常常见到,比如说你在下载视频或文件的时候,提示你当前下载进度的 ...
- locust===Writing a locustfile
The Locust class A locust class represents one user (or a swarming locust if you will). Locust will ...
- [转载]基于Redis的Bloomfilter去重(附Python代码)
前言: “去重”是日常工作中会经常用到的一项技能,在爬虫领域更是常用,并且规模一般都比较大.去重需要考虑两个点:去重的数据量.去重速度.为了保持较快的去重速度,一般选择在内存中进行去重. 数据量不大时 ...
- Oracle基础 02 临时表空间 temp
--查看临时文件的使用/剩余空间 SQL> select * from v$temp_space_header; --查看SCOTT用户所属的临时表空间 SQL> select usern ...
- Markdown文件导出为HTML的小程序
Markdown文件导出为HTML的小程序 为什么做 最近把一些学习经验记下来,总结成MarkDown文件,不知不觉已经有12篇了. Sublime Text 的 MarkDown Preview 插 ...
- 使用pipeline管道执行redis命令
pipeline管道可以减少后端与redis的连接次数,从而实现了优化. 原理如下: 使用方法: 未使用pipeline前: strict_redis = get_redis_connection(' ...
- html实现点击章节自动调到开头
#转载请联系 原理是用id的值结合a链接实现锚点效果.比较简单,直接放一段代码好了. <!DOCTYPE html> <html lang="en"> &l ...