android 27 ListView


效果:


上图中ArrarAdapter是数组的适配器,CursorAdapter是游标适配器,用于操作数据库的数据。
ListView是垂直列表,数据源是集合或者数组,这些View都是安卓里的AdapterView的子类,都是支持适配器的View,AdapterView是通过Adapter(适配器类)像AdapterView的子类视图填充数据,BaseAdapter是所有适配器类的基类。适配器是MVC的C,View是V,数据是M,
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" > <ListView
android:id="@+id/lvGeneral"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:divider="#ccc"
android:dividerHeight="2dp"/> 分割线的高度 </RelativeLayout>
MainActivity.java
package com.sxt.day05_01; import java.util.ArrayList;
import java.util.List; import com.sxt.day05_01.entity.GeneralBean; import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView; public class MainActivity extends Activity {
ListView mlvGeneral;
List<GeneralBean> mGenerals;//代表十个军事家的集合
GeneralAdapter mAdapter;
int[] resid={//图片数组,
//里面存的是图片的id整型值
//public static final int baiqi=0x7f020000;
// public static final int caocao=0x7f020001;
R.drawable.baiqi,R.drawable.caocao,R.drawable.chengjisihan,
R.drawable.hanxin,R.drawable.lishimin,R.drawable.nuerhachi,
R.drawable.sunbin,R.drawable.sunwu,R.drawable.yuefei,
R.drawable.zhuyuanzhang
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initData();//初始化数据
initView();
} private void initView() {
mlvGeneral=(ListView) findViewById(R.id.lvGeneral);//main.xml中的ListView
mAdapter=new GeneralAdapter();//创建适配器
mlvGeneral.setAdapter(mAdapter);//关联适配器
} private void initData() {
//将资源中的字符串组数转换为Java数组,generals是int类型,代表strings.xml中定义的string数组<string-array/>标签
String[] names=getResources().getStringArray(R.array.generals);//getResources获取res资源,
/*
strings.xml
<resources>
<string name="app_name">Day05_01-ListViewDemo</string>
<string name="action_settings">Settings</string>
<string name="hello_world">Hello world!</string>
<string-array name="generals">
<item>白起</item>
<item>曹操</item>
<item>成吉思汗</item>
<item>韩信</item>
<item>李世民</item>
<item>努尔哈赤</item>
<item>孙膑</item>
<item>孙武</item>
<item>朱元璋</item>
<item>岳飞</item>
</string-array>
</resources>*/
mGenerals=new ArrayList<GeneralBean>();
for (int i = 0; i < names.length; i++) {
GeneralBean bean=new GeneralBean(resid[i], names[i]);
mGenerals.add(bean);
}
} //定义适配器
class GeneralAdapter extends BaseAdapter{ @Override
public int getCount() {//返回所有集合数据数组的长度
return mGenerals.size();
} @Override
public GeneralBean getItem(int position) {//返回某一行的数据
return mGenerals.get(position);
} @Override
public long getItemId(int position) {
return position;
} @Override
//返回ListView的一行给安卓系统,安卓系统拿到View后进行绘制,position某一行View在ListView的索引,convertView缓存当前列表中所有的列表项在内存中,比如数据有100个但是ListView只有10个则每次只显示10个,屏幕滚动的时候再显示后面的数据,但是每次屏幕只显示10个,
//parent就是ListView
public View getView(int position, View convertView, ViewGroup parent) {
//拿到ListViewItem的布局,转换为View类型的对象,item_generals是int类型,代表item_generals.xml文件
//返回行布局LinearLayout,将R.layout.item_generals布局转换为View的Java对象
View layout=View.inflate(MainActivity.this, R.layout.item_generals, null);
//找到显示军事家头像的ImageView,findViewById前面不加layout则在activity_main.xml中找,
ImageView ivThumb=(ImageView) layout.findViewById(R.id.ivThumb);
//找到显示军事家名字的TextView
TextView tvName=(TextView) layout.findViewById(R.id.tvName);
//获取军事中下标是position的军事家对象
GeneralBean bean=mGenerals.get(position);
//显示军事家头像
ivThumb.setImageResource(bean.getResid());
//显示军事家的姓名
tvName.setText(bean.getName()); return layout;//返回给安卓系统,则绘制一行,getView被调用getCount次,
} }
}
item_generals.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"
android:orientation="horizontal" >
<ImageView
android:id="@+id/ivThumb"
android:layout_width="80dp"
android:layout_height="80dp"
android:src="@drawable/baiqi"/>
<TextView
android:id="@+id/tvName"
android:layout_width="wrap_content"
android:layout_height="80dp"
android:layout_marginLeft="10dp" 左边距离
android:text="白起"
android:textSize="20sp"
android:gravity="center_vertical"/> 内部垂直居中
</LinearLayout>
GeneralBean.java
public class GeneralBean {
private int resid;//图片的id值
private String name;//军事家的姓名
public int getResid() {
return resid;
}
public void setResid(int resid) {
this.resid = resid;
}
android 27 ListView的更多相关文章
- 转--Android实现ListView过滤功能,继承于BaseAdapter,非ArrayAdapter。
其实实现ListView过滤功能最方便的便是使用ArrayAdapter,里面自带的getFilter()方法能很方便的实现此功能,但是在实际的开发中,一般都是继承于BaseAdapter.还有一种是 ...
- Android的ListView异步加载图片时,错位、重复、闪烁问题的分析及解决方法
Android ListView异步加载图片错位.重复.闪烁分析以及解决方案,具体问题分析以及解决方案请看下文. 我们在使用ListView异步加载图片的时候,在快速滑动或者网络不好的情况下,会出现图 ...
- 【android】listview改变选中行背景图片
[android]listview改变选中行背景图片 目标:当item选中时,改变其背景图片.效果图如下: 直接在listview的xml文件中使用listselector: 1 2 3 4 5 6 ...
- android中listView下拉刷新
Android的ListView是应用最广的一个组件,功能强大,扩展性灵活(不局限于ListView本身一个类),前面的文章有介绍分组,拖拽,3D立体,游标,圆角,而今天我们要介绍的是另外一个扩展Li ...
- Android—万能ListView适配器
ListView是开发中最常用的控件了,但是总是会写重复的代码,浪费时间又没有意义. 最近参考一些资料,发现一个万能ListView适配器,代码量少,节省时间,总结一下分享给大家. 首先有一个自定义的 ...
- Android中ListView实现图文并列并且自定义分割线(完善仿微信APP)
昨天的(今天凌晨)的博文<Android中Fragment和ViewPager那点事儿>中,我们通过使用Fragment和ViewPager模仿实现了微信的布局框架.今天我们来通过使用Li ...
- Android之ListView性能优化——一行代码绑定数据——万能适配器
如下图,加入现在有一个这样的需求图,你会怎么做?作为一个初学者,之前我都是直接用SimpleAdapter结合一个Item的布局来实现的,感觉这样实现起来很方便(基本上一行代码就可以实现),而且也没有 ...
- Android中ListView的几种常见的优化方法
Android中的ListView应该算是布局中几种最常用的组件之一了,使用也十分方便,下面将介绍ListView几种比较常见的优化方法: 首先我们给出一个没有任何优化的Listview的Adapte ...
- android——自定义listView
都知道微信主机面 有个界面会一行一一行的聊天记录,那个效果就可以用listview来实现(当然这只是其中的一种) listView是一种比较常见的组件它用来展示列的view,它是根据数据的长度来显示数 ...
随机推荐
- ExecuteNonQuery()返回值
查询某个表中是否有数据的时候,我用了ExecuteNonQuery(),并通过判断值是否大于0来判断数据的存在与否.结果与我所设想的很不一致,调试时才发现,其执行后返回的结果是-1,对此我很是不理解, ...
- WPF DataGrid
前台代码 <DataGrid Name="gv_GetWork" AutoGenerateColumns="False" CanUserSortColum ...
- 用Enterprise Architect从源码自动生成类图
http://blog.csdn.net/zhouyong0/article/details/8281192 /*references:感谢资源分享者.info:简单记录如何通过工具从源码生成类图,便 ...
- MySQL创建用户、授权等
用于MySQL5.6命令行执行成功: create database wp_people; create user wp_people@'localhost' identified by 'yrwb' ...
- Phonegap 3.0 设置APP是否全屏
Phonegap 3.0 默认是全屏,如需要取消全屏,可手动修改config, 在APP/res/xml/config.xml文件可设置preference: <?xml version='1. ...
- IndexedDB
http://www.tfan.org/indexeddb/ http://fnvfox.appspot.com/thankyou.html http://www.tfan.org/wechat-on ...
- JPA2.1 中三个提升应用性能的新功能
经常在网上看到开发者们抱怨 JPA 性能低下的帖子或文章,但如果仔细查看这些性能问题,常会发现导致问题的根本原因大致包括以下几个: 使用过多的 SQL 查询从数据库中获取所需的实体信息,即我们常说的n ...
- How Many Shortest Path
zoj2760:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2760 题意:给你一张有向带权图,然后问你最短路径有多少条. ...
- 自定义JSON配置器
比如要写个专门处理float类型的方法,然后注册到JSON配置器中,具体如下: 配置器代码如下: import java.math.RoundingMode; import java.text.Num ...
- java webservice服务器端获取request对象的三种方式
有的时候在webservice里我们需要获取request对象和response对象,比如想要获得客户端的访问ip的时候就需要这么做,下面说三种方式,当然三种方式可能是针对不同方式部署webservi ...