android开发 一个更优的listView的写法
布局xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ListLayout"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="150dp"
android:background="#FFF"
android:padding="10dp">
<ImageView
android:id="@+id/myImageView"
android:src="@drawable/bblood"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<LinearLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp">
<TextView
android:id="@+id/TextName"
android:text="这里是名称显示"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30sp"
android:textColor="#000"/>
<TextView
android:id="@+id/Description"
android:text="这里是描述显示"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:textColor="#000"/>
</LinearLayout>
</LinearLayout>
list内容适配器(使用了子布局缓存和主布局复用):
package com.example.lenovo.myapplication;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.List;
/**
* Created by lenovo on 2018/4/25.
*/
public class ListAdapter extends ArrayAdapter<ListArray> {
private int ListLayoutId;
public ListAdapter(Context context , int textViewResourrceId, List<ListArray> obj){
super(context,textViewResourrceId,obj);
this.ListLayoutId = textViewResourrceId;
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
ListArray listArray = getItem(position);
View view ;
ViewHolder viewHolder;
if(convertView == null){
view = LayoutInflater.from(getContext()).inflate(ListLayoutId,parent,false);
viewHolder = new ViewHolder();
viewHolder.HmyImageView = (ImageView)view.findViewById(R.id.myImageView);
viewHolder.HtextName = (TextView)view.findViewById(R.id.TextName);
viewHolder.Hdescription = (TextView)view.findViewById(R.id.Description);
view.setTag(viewHolder);
}else {
view = convertView;
viewHolder = (ViewHolder)view.getTag();
}
viewHolder.HmyImageView.setImageResource(listArray.getIconId());
viewHolder.HtextName.setText(listArray.getName());
viewHolder.Hdescription.setText(listArray.getDescription());
return view;
}
class ViewHolder{
ImageView HmyImageView;
TextView HtextName;
TextView Hdescription;
}
}
listView实现activity类:
package com.example.lenovo.myapplication;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView;
import java.util.ArrayList;
import java.util.List;
public class ListDemoActivity extends AppCompatActivity {
private List<ListArray> listArray = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_demo);
dataImport();
ListAdapter listAdapter = new ListAdapter(ListDemoActivity.this,R.layout.list_layout,listArray);
ListView listView = (ListView)findViewById(R.id.ListView01);
listView.setAdapter(listAdapter);
}
private void dataImport(){
ListArray listArray1 = new ListArray("Blood","血",R.drawable.bblood);
listArray.add(listArray1);
ListArray listArray2 = new ListArray("BloodRing","血环",R.drawable.bbloodrring);
listArray.add(listArray2);
ListArray listArray3 = new ListArray("ColoredFlowers","五色花",R.drawable.ccoloredfflowers);
listArray.add(listArray3);
ListArray listArray4 = new ListArray("Delight","欢欣",R.drawable.ddelight);
listArray.add(listArray4);
ListArray listArray5 = new ListArray("DrippingFlower","水滴花",R.drawable.ddrippingfflower);
listArray.add(listArray5);
ListArray listArray6 = new ListArray("EyeOfFlame","火焰之眼",R.drawable.eeyeooffflame);
listArray.add(listArray6);
ListArray listArray7 = new ListArray("EyeOfRotation","旋转之眼",R.drawable.eeyeoofrrotation);
listArray.add(listArray7);
ListArray listArray8 = new ListArray("Flame","火焰",R.drawable.fflame);
listArray.add(listArray8);
ListArray listArray9 = new ListArray("FourPetals","四叶花",R.drawable.ffourppetals);
listArray.add(listArray9);
ListArray listArray10 = new ListArray("Gradient","渐变",R.drawable.ggradient);
listArray.add(listArray10);
ListArray listArray11 = new ListArray("GreenLeaf","绿叶",R.drawable.ggreenlleaf);
listArray.add(listArray11);
ListArray listArray12 = new ListArray("IronAngle","铁角花",R.drawable.iironaangle);
listArray.add(listArray12);
ListArray listArray13 = new ListArray("IronThorns","绿叶",R.drawable.iirontthorns);
listArray.add(listArray13);
ListArray listArray14 = new ListArray("lookUp","向上看",R.drawable.llookuup);
listArray.add(listArray14);
ListArray listArray15 = new ListArray("Rotatingleaves","旋叶",R.drawable.rrotatingleaves);
listArray.add(listArray15);
ListArray listArray16 = new ListArray("ShadowFlow","暗影流",R.drawable.sshadowfflow);
listArray.add(listArray16);
ListArray listArray17 = new ListArray("TechnologyEye","科技眼",R.drawable.tthreelleaves);
listArray.add(listArray17);
ListArray listArray18 = new ListArray("ThreeLeaves","三叶",R.drawable.iirontthorns);
listArray.add(listArray18);
}
}
android开发 一个更优的listView的写法的更多相关文章
- Android开发之漫漫长途 XIV——ListView
该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列.该系列引用了<Android开发艺术探索>以及<深入理解And ...
- Android开发之漫漫长途 XVI——ListView与RecyclerView项目实战
该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列.该系列引用了<Android开发艺术探索>以及<深入理解And ...
- Android开发 如何最优的在Activity里释放资源
前言 当前你已经入门Android开发,开始关注深入的问题,你就会碰到一个Android开发阶段经常碰到的问题,那就是内存泄漏. 其实大多数Android的内存泄漏都是因为activity里的资源释放 ...
- Android开发学习之路-自定义ListView(继承BaseAdapter)
大三学生一个,喜欢编程,喜欢谷歌,喜欢Android,所以选择的方向自然是Android应用开发,开博第一篇,希望以后会有更多的进步. 最近在做一个记账App的时候,需要一个Activity来显示每个 ...
- Android开发笔记(12)——ListView & Adapter
转载请注明:http://www.cnblogs.com/igoslly/p/6947225.html 下一章是关于ListFragment的内容,首先先介绍ListView的相关配置,理解ListF ...
- android开发中使不同的listview同时联动
在做一个Android程序时,需要在一个屏幕上显示两个不同的listview,开始用< linearlayout>包裹这两个listview在<ScrollView >设置时, ...
- Android 开发调试最优选项
1 开发环境 VS2019 16.4.5 2 开发调试选项 Android 选项
- Android开发(十五)——ListView中Items的间距margin
ListView中Items没有margin 参考:http://www.cnblogs.com/xitang/p/3677528.html
- android开发里跳过的坑——listview不显示
在蓝牙回调接口public void onLeScan(BluetoothDevice device, int arg1, byte[] arg2)里面调用adpter.notifyDataSetCh ...
随机推荐
- mysql性能分析show profile/show profiles
MySQL性能分析show profiles show profile 和 show profiles 语句可以展示当前会话(退出session后,profiling重置为0) 中执行语句的资源使用情 ...
- Linux之异步通知机制分析
1.概念: 异步通知机制:一旦设备就绪,则主动通知应用程序,这样应用程序根本就不需要查询设备状态,是一种“信号驱动的异步I/O”.信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号 ...
- PHP代码实现3 [函数角度]
内部函数 标准函数的实现存放在ext/standard扩展目录中. php函数种类 Zend engine中的function的存在形式 123456 struct _zend_execute_dat ...
- ssl-openssl简介
SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议.TLS与 ...
- SQL2000服务端配置-如何让外网访问SQL2000
刚刚写了个DEMO,在内网来测试SQL2000后完全正常.现在想测试外网是否正常,毕竟路由器IP不固定,所以选择了路由器+花生壳免费域名(koma.5166.info),所以先安装花生壳客户端软件.下 ...
- BlueZone automation note1
To run the patch test cases in C:\sliData\TAF\bzw\test-packs\run_jobs via run_example_tests_smoke_te ...
- C/C++基础----重载运算与类型转换
非成员版本 data1 + data2: operator+(data1, data2); 成员版本 data1 += data2: data1.operator+=(data2); 不建议的重载 逻 ...
- C/C++基础----关联容器
基本属性 与顺序容器的差别,按照关键字来保存和访问,而顺序容器是按照容器中的位置来顺序保存和访问. map:每个元素是一对键值(key-valye)组合:set每个元素只包含关键字.. 每个根据关键字 ...
- springboot springcloud 热部署
本文转载自:https://www.cnblogs.com/moly/p/7978303.html 可以在配置修改某些文件重启,建议配置一个控制文件,只有此文件修改才会重启. 1. pom中添加: & ...
- 1119.(重、错)Pre- and Post-order Traversals
题目大意: 给定一棵树的结点个数n,以及它的前序遍历和后序遍历,输出它的中序遍历: 如果中序遍历不唯一就输出No,且输出其中一个中序即可,如果中序遍历唯一就输出Yes,并输出它的中序 思路:(转载) ...