Android—高级控件(二)ListView 优化版
来源:互联网 发布:ubuntu ibus 系统设置 编辑:程序博客网 时间:2024/05/21 05:22
ListView优化(减少占用的运行内存)
实例:
代码:
布局文件
主布局
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <ListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/lv_list_view1" > </ListView></LinearLayout>
副布局
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent" android:descendantFocusability="blocksDescendants" > <ImageView android:layout_width="50dp" android:layout_height="50dp" android:id="@+id/iv_item_icon" /> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:textSize="30sp" android:id="@+id/iv_item_text" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="下载" android:id="@+id/iv_item_bt" /></LinearLayout>
Java代码
package com.example.myapplication;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.BaseAdapter;import android.widget.Button;import android.widget.ImageView;import android.widget.ListView;import android.widget.SimpleAdapter;import android.widget.TextView;import android.widget.Toast;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;/** * Created by Administrator on 2017/6/9 0009. */public class ListView1Activity extends AppCompatActivity{ private ListView lv_list_view1; //数据源 private String titles[]={"小鸟","小猫","小鸡","小牛","小狗"}; private int images[]={R.drawable.bird,R.drawable.cat,R.drawable.chicken,R.drawable.cow,R.drawable.dog}; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.listview1); //第一步 获取控件 lv_list_view1 = (ListView) findViewById(R.id.lv_list_view1); //第二步 设置数据源 /* //第三步 给控件设置适配器(可优化) List<Map<String,Object>> list=new ArrayList<>(); for (int i = 0; i < titles.length; i++) { Map<String,Object> map=new HashMap<>(); map.put("title",titles[i]); map.put("image",images[i]); list.add(map); } SimpleAdapter adapter=new SimpleAdapter(this,list,R.layout.item_listview,new String[]{"title","image"},new int[]{R.id.iv_item_text,R.id.iv_item_icon}); lv_list_view1.setAdapter(adapter);*/ lv_list_view1.setAdapter(new MyAdapter()); //第四步给listview设置点击事件 lv_list_view1.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(ListView1Activity.this,"跳转"+titles[position%titles.length],Toast.LENGTH_SHORT).show(); } }); } //OOM OutOfMemory 内存溢出 class MyAdapter extends BaseAdapter{ //返回出多少行数据 @Override public int getCount() { return 10000; } @Override public Object getItem(int position) { return titles[position%titles.length]; } @Override public long getItemId(int position) { return position; } @Override public View getView(final int position, View convertView, ViewGroup parent) { //判断是否为空 if(convertView==null){ convertView=getLayoutInflater().inflate(R.layout.item_listview,null); ItemTag itemTag=new ItemTag(); itemTag.imageView= (ImageView) convertView.findViewById(R.id.iv_item_icon); itemTag.textView= (TextView) convertView.findViewById(R.id.iv_item_text); itemTag.button= (Button) convertView.findViewById(R.id.iv_item_bt); convertView.setTag(itemTag); } ItemTag itemTag=(ItemTag) convertView.getTag(); //设值 itemTag.imageView.setImageResource(images[position%titles.length]); itemTag.textView.setText(titles[position%titles.length]); //给按钮设置点击事件 itemTag.button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(ListView1Activity.this,"正在下载"+titles[position%titles.length],Toast.LENGTH_SHORT).show(); } }); return convertView; } }}
阅读全文
0 0
- Android—高级控件(二)ListView 优化版
- Android—高级控件(二)ListView
- 8.高级控件(二)之ListView优化
- Android基本控件之ListView(二)<ListView优化>
- android高级控件ListView
- ListView android高级控件
- android高级控件-ListView
- Android 高级控件(二)
- 二、ListView的高级优化
- Android控件ListView(二)
- Android高级UI控件—ListView
- Android ListView控件优化
- Android高级控件之ListView
- Android控件 – ListView的使用(二)– addHeaderView、addFooterView的使用与滑动优化
- Android常用控件(二)【ProgressBar、ListView】
- Android控件之ListView(二)
- Android常用控件之ListView(二)
- ListView优化总结(二)--Android
- 生活杂感
- thinkPHP cache类
- 观察者模式
- Android开发中的一些小知识点记录(41-60)
- CTF-PWN之fsp-utilize漏洞利用
- Android—高级控件(二)ListView 优化版
- TensorFlow in Go
- 在AndroidStudio中使用gradle构建出现的一些问题
- git学习笔记
- 浅析Java中的Parcelable和Serializable
- 破解**jetbrains**的**Webstorm、Pycharm、Phpstorm、RubyMine**
- Python自然语言分析(第四期):第3课书面作业
- 关于require.js的用法(很重要)
- div css文字字体行高行距 深入理解css行间距设置