Android课程---优化ListView列表视图(2)
layout_simple.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="wrap_content">
<ImageView
android:layout_width="70dp"
android:layout_height="70dp"
android:src="@drawable/yuantu"
android:id="@+id/lv2"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="center_vertical"
android:layout_marginLeft="20dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="美食图片"
android:id="@+id/tv1"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="很好吃啊"
android:id="@+id/tv2"/> </LinearLayout> </LinearLayout>
activity_ui5.xml
<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/lv_2"> </ListView>
UIActity.java
package com.hanqi.test5; import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView; import java.util.ArrayList;
import java.util.List; public class UIActivity5 extends AppCompatActivity
{ //数据源
//List<Map<String,Object>> lm;
List<Food> lf; @Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ui5); //获取ListView
ListView lv_2 =(ListView)findViewById(R.id.lv_2);
//准备数据源
lf = new ArrayList<Food>();
lf.add(new Food(R.drawable.yuantu,"内容1","美食1"));
lf.add(new Food(R.drawable.yuantu,"内容2","美食2"));
lf.add(new Food(R.drawable.yuantu,"内容3","美食3"));
lf.add(new Food(R.drawable.yuantu,"内容4","美食4"));
/* lm =new ArrayList<Map<String,Object>>();
Map<String,Object> map = new Hashtable<String, Object>(); map.put("image",R.drawable.yuantu);
map.put("name","美食图片01");
map.put("content","很好吃啊01");
lm.add(map); map = new Hashtable<String, Object>();
map.put("image",R.drawable.yuantu);
map.put("name","美食图片02");
map.put("content","很好吃啊02");
lm.add(map); map = new Hashtable<String, Object>();
map.put("image",R.drawable.yuantu);
map.put("name","美食图片03");
map.put("content","很好吃啊03");
lm.add(map); map = new Hashtable<String, Object>();
map.put("image",R.drawable.yuantu);
map.put("name","美食图片04");
map.put("content","很好吃啊04");
lm.add(map);*/ lv_2.setAdapter(new MyBaseAdapter()); }
class MyBaseAdapter extends BaseAdapter
{
//获取要显示的行数
@Override
public int getCount()
{ return lf.size();
} //获取对应下标的行
@Override
public Object getItem(int position)
{
return lf.get(position);
}
//获取对应行的id
@Override
public long getItemId(int position)
{
return position;
}
//给视图适配数据,返回视图
//3个参数:1.position(数据的下标)
//2.convertView(可重复使用的视图)
//3.parent(父视图)
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
//如果convertView为空,就加载layout文件
if (convertView == null)
{
Log.e("TAG","position = "+position); //1.获取样式文件(layout文件)
LayoutInflater layoutInflater = getLayoutInflater();
convertView = layoutInflater.inflate(R.layout.layout_simple, null);
}
//2.数据和layout文件的视图组件进行绑定
//1)从数据源里获取一行数据
//Map<String,Object> map = lm.get(position); Food food = lf.get(position); //2)获取layout文件的视图组件
ImageView iv_2 = (ImageView)convertView.findViewById(R.id.lv2);
TextView tv1 = (TextView)convertView.findViewById(R.id.tv1);
TextView tv2 = (TextView)convertView.findViewById(R.id.tv2); //3)绑定(数据适配)
// iv_2.setImageResource((int) map.get("image"));
// tv1.setText(map.get("name").toString());
// tv2.setText(map.get("content").toString()); iv_2.setImageResource((int) food.getImage());
tv1.setText(food.getName());
tv2.setText(food.getContent()); //3.返回视图
return convertView;
}
}
}
效果图:

Android课程---优化ListView列表视图(2)的更多相关文章
- Android课程---优化ListView列表视图
activity_ui4.xml <?xml version="1.0" encoding="utf-8"?> <ListView xmlns ...
- Android课程---关于ListView列表视图的学习
activity_ui3.xml <?xml version="1.0" encoding="utf-8"?> <ListView xmlns ...
- Android之怎样使用ListView列表视图
ListView 列表视图创建方法: (1)直接使用ListView 组件创建 (2)让Activity继承ListActivity实现 第一种:在XML中直接使用ListView 组件创建 在val ...
- Android中通过数组资源文件xml与适配器两种方式给ListView列表视图设置数据源
场景 实现效果如下 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 将布局改 ...
- Android UI组件----ListView列表控件详解
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3 ...
- Android ListView 列表视图
列表显示的三个元素 ListView : 用来显示列表的View Adapter : 适配器 用来把数据映射到ListView 上的中介 Data: 数据 将被映射的字符串,图片或者基本组件等资源 根 ...
- Android性能优化--Listview优化
ListView的工作原理 首先来了解一下ListView的工作原理(可参见http://mobile.51cto.com/abased-410889.htm),如图: ListView 针对每个it ...
- 优化listview列表速度
listview是我们常用的显示列表的组件,功能非常强大,但也需要注意优化: 1 adapter的getview中进行视图缓存2 图片进行异步下载及缓存3 快速滑动时不显示图片4 不要再adapter ...
- Android课程---关于GridView网格视图的学习
activity_ui6.xml <?xml version="1.0" encoding="utf-8"?> <GridView xmlns ...
随机推荐
- DAY6 处理http头,格式化输出
<html> <head> <script> function insertStr(str1,n,str2){ if(str1.length<n){ retu ...
- python 字典的函数
clear(),清空 注意单纯的赋值就相当于c语言中引用,只事额外起了一个别名,所以他们指向相同的地址, 所以令c={},只是另外开辟了一个新的空间让c为空,并没有改变之前的空间,所以{}与clear ...
- delphi xe4 程序添加管理员权限要求后不能调试的解决方法
环境: win7 企业版 xe4 问题: 把项目设置为需要管理员权限才能运行后,调试会弹出一个提示框,如图:
- JavaScript方法——call和apply
1.相同点: a) 产生的效果或作用完全相同: b) 至少有一个参数: c) 第一个参数必须有且是一个对象(Object),因为就是这个家伙偷懒. 2.不同点: 传递参数的方式. 前提: 1.有两个对 ...
- EF框架的三种工作方式
EF框架step by step(1)—Database-First EF框架step by step(2)—Model-First EF框架step by step(3)—Code-First 通过 ...
- stl vector erase
C++ Code 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 ...
- 【转】Intellij IDEA 14中使用MyBatis-generator 自动生成MyBatis代码
Intellij IDEA 14 作为Java IDE 神器,接触后发现,非常好用,对它爱不释手,打算离开eclipse和myeclipse,投入Intellij IDEA的怀抱. 然而在使用的过程中 ...
- GitHub for windows呆瓜级入门
一.GitHub是一个远程数据托管平台,对于代码用于版本控制(保存各个阶段的代码版本).首先去 https://github.com/ 注册一个GitHub账号 二.输入用户名(不能重复,相当于在Gi ...
- OC编程之道-创建对象之原型模式
一 什么是原型模式?(what) 有些对象的创建代价过大或过于复杂,要是可以重建相同的对象并作轻微的改动,事情会容易的多(效率变高).典型的例子是复制组合结构(eg树形结构),从零开始构建一个树型组合 ...
- Java设计模式之结构型模式
结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元模式. 一.适配器模式: 意图: 将一个类的接口转换成客户希望的另外一个接口.Adapter 模式使得原本由于接 ...