博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Android]BaseAdapter-ListView实现
阅读量:5024 次
发布时间:2019-06-12

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

1. MainActivity.java

public class MainActivity extends Activity {

//声明UI组件和资源变量等
private ListView lv2;
private MyListViewAdapter listViewAdapter;;

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
//基于BaseAdapter
//setContentView(R.layout.gallery);
//setGalleryView();
//基于ListView、GridView及Spinner和BaseAdapter实现
setContentView(R.layout.main);
setLGSView();
}

private void setLGSView() {

lv2 = (ListView)findViewById(R.id.listview2);
listViewAdapter = new MyListViewAdapter(this);
lv2.setAdapter(listViewAdapter);
}

2. MyListViewAdapter.java

package home.lee.listviewadapterdemo;

import android.content.Context;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class MyListViewAdapter extends BaseAdapter {

private Context context;//为myInflater而采用context

private LayoutInflater myInflater;

public MyListViewAdapter(Context context) {

super();
this.context = context;
}

@Override

public int getCount() {//用来说明需要绘制的条目数
return 8;//数组的长度,即个数,可以根据实际调整
}

@Override

public Object getItem(int position) {
return position;
}

@Override

public long getItemId(int position) {
return position;
}

@Override

public View getView(int position, View convertView, ViewGroup parent) {//用来说明需要绘制的条目数个条目就调用一次这个方法
ViewHolder holder = new ViewHolder();
if (convertView == null)
{
/**
* 这个方法getView(),是用来逐一绘制每一条item
*
* setTag()会把View与ViewHolder绑定,形成一一对应的关系,拖动listview的时候会重新绘制每一条item
* 但是那些已经取得绑定的View,会调用getTag()方法,就不会重新绘制,而是拿到内存中已经取得的资源,提高了效率
*
* @param position position就是位置从0开始
* @param convertView convertView是Spinner,ListView中每一项要显示的view
* @param parent parent就是父窗体了,也就是Spinner,ListView,GridView了
* @return 通常return 的view也就是convertView
*
* 在程序中动态加载以上布局:
* LayoutInflater flater = LayoutInflater.from(this);
* View view = flater.inflate(R.layout.example, null);
*/
myInflater = LayoutInflater.from(context);
convertView = myInflater.inflate(R.layout.item_list, null);

holder.icon = (ImageView)convertView.findViewById(R.id.itemimageview2);

holder.text = (TextView)convertView.findViewById(R.id.itemtextview2);

convertView.setTag(holder);

}
else
{
holder = (ViewHolder) convertView.getTag();
}

if (position <= 1)

{
holder.icon.setImageResource(android.R.drawable.btn_dropdown);
holder.text.setText("你好");
}
else if (position <= 3 && position >= 2)
{
holder.icon.setImageResource(android.R.drawable.edit_text);
holder.text.setText("Hello");
}
else
{
holder.icon.setImageResource(android.R.drawable.spinner_dropdown_background);
holder.text.setText("안녕하세요");
}
return convertView;
}

private class ViewHolder

{
TextView text;
ImageView icon;
}

}

 

3. main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/linearlayout2"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="ListView" />
<ListView
android:id="@+id/listview2"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</ListView>
</LinearLayout>

4. item_list.xml

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<TextView
android:id="@+id/itemtextview2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:layout_weight="1"/>
<ImageView
android:id="@+id/itemimageview2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/app_name"
android:src="@drawable/ic_launcher"
android:layout_weight="10"/>
</LinearLayout>

运行结果:

其改进应用可参考: 

转载于:https://www.cnblogs.com/webapplee/p/3771751.html

你可能感兴趣的文章
C#调用斑马打印机打印条码标签(支持COM、LPT、USB、TCP连接方式和ZPL、EPL、CPCL指令)【转】...
查看>>
关于git的认证方式
查看>>
字符串按照字典序排列
查看>>
IOS 开发调用打电话,发短信
查看>>
CI 框架中的日志处理 以及 404异常处理
查看>>
keepalived介绍
查看>>
css3 标签 background-size
查看>>
python itertools
查看>>
Linux内核调试技术——jprobe使用与实现
查看>>
样式、格式布局
查看>>
ubuntu设计文件权限
查看>>
Vue双向绑定原理详解
查看>>
Android基础总结(5)——数据存储,持久化技术
查看>>
关于DataSet事务处理以及SqlDataAdapter四种用法
查看>>
bootstrap
查看>>
http://lorempixel.com/ 可以快速产生假图
查看>>
工程经验总结之吹水"管理大境界"
查看>>
为什么JS动态生成的input标签在后台有时候没法获取到
查看>>
20189210 移动开发平台第六周作业
查看>>
java之hibernate之基于外键的双向一对一关联映射
查看>>