博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android listview与adapter用法(BaseAdapter + getView)
阅读量:6070 次
发布时间:2019-06-20

本文共 3483 字,大约阅读时间需要 11 分钟。

hot3.png

package com.example.listviewtest;import java.util.ArrayList;import java.util.HashMap;import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.view.View.OnClickListener;import android.widget.AdapterView;import android.widget.BaseAdapter;import android.widget.Button;import android.widget.TextView;import android.widget.AdapterView.OnItemClickListener;import android.widget.ListView;//import com.example.listviewtest.MyAdapter;public class BaseAdapterTest extends Activity {        private ListView lv;    ArrayList
> listItem; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv = (ListView) findViewById(R.id.listview01); MyAdapter mAdapter = new MyAdapter(this); //得到一个MyAdapter对象 lv.setAdapter(mAdapter); //为ListView绑定Adapter /*为ListView添加点击事件*/ lv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView
parent, View view, int position, long id) { Log.v("BaseAdapterTest", "你点击了ListView条目" + position); } }); } /*添加一个得到数据的方法,方便使用*/ private ArrayList
> getData() { ArrayList
> listItem = new ArrayList
>(); /*为动态数组添加数据*/ for (int i = 0; i < 30; i++) { HashMap
map = new HashMap
(); map.put("ItemTitle", "第" + i + "行"); map.put("ItemText", "这是第" + i + "行"); listItem.add(map); } return listItem; } // 新建一个类继承BaseAdapter,实现视图与数据的绑定 private class MyAdapter extends BaseAdapter { private LayoutInflater mInflater; //得到一个LayoutInfalter对象用来导入布局 public MyAdapter(Context context) { this.mInflater = LayoutInflater.from(context); } @Override public int getCount() { return getData().size(); //返回数组的长度 } @Override public View getView(final int position, View convertView, ViewGroup parent) { ViewHolder holder; Log.v("BaseAdapterTest", "getView " + position + " " + convertView); if (convertView == null) { convertView = mInflater.inflate(R.layout.listitem, null); holder = new ViewHolder(); /*得到各个控件的对象*/ holder.title = (TextView) convertView.findViewById(R.id.ItemTitle); holder.text = (TextView) convertView.findViewById(R.id.ItemText); holder.bt = (Button) convertView.findViewById(R.id.ItemButton); // to ItemButton convertView.setTag(holder); //绑定ViewHolder对象 } else { holder = (ViewHolder) convertView.getTag(); //取出ViewHolder对象 } /*设置TextView显示的内容,即我们存放在动态数组中的数据*/ holder.title.setText(getData().get(position).get("ItemTitle").toString()); holder.text.setText(getData().get(position).get("ItemText").toString()); /*为Button添加点击事件*/ holder.bt.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Log.v("BaseAdapterTest", "你点击了按钮" + position); //打印Button的点击信息 } }); return convertView; } @Override public Object getItem(int position) { // TODO Auto-generated method stub return null; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return 0; } } /*存放控件 的ViewHolder*/ public final class ViewHolder { public TextView title; public TextView text; public Button bt; }}

转载于:https://my.oschina.net/u/588516/blog/753822

你可能感兴趣的文章
2016/4/19 反射
查看>>
SharePoint Wiki发布页面的“保存冲突”
查看>>
oracle 10g 数据库与客户端冲突导致实例创建无监听问题
查看>>
Delphi中读取文本文件的方法(实例一)
查看>>
Linux常用命令
查看>>
Android开源代码解读の使用TelephonyManager获取移动网络信息
查看>>
想说一点东西。。。。
查看>>
css知多少(8)——float上篇
查看>>
NLB网路负载均衡管理器详解
查看>>
水平添加滚动条
查看>>
PHP中”单例模式“实例讲解
查看>>
VS2008查看dll导出函数
查看>>
VM EBS R12迁移,启动APTier . AutoConfig错误
查看>>
atitit.细节决定成败的适合情形与缺点
查看>>
iOS - Library 库
查看>>
MATLAB 读取DICOM格式文件
查看>>
spring事务管理(Transaction)
查看>>
django.contrib.auth登陆注销学习
查看>>
js执行本地exe文件的3种方法
查看>>
理解B树索引
查看>>