我们不可能满足只是往每个item里面填字就足够,像QQ的好友列表就是一个ListView,每个Item里面有头像、名字啊、签名什么的,内容丰富。那我们要怎么定义一个内容丰富的item呢?

要用到Adapter啦!构造每一个ListView都要有一个Adapter,只要这个Adapter弄好了,每个Item也就弄好啦!

让我们来看看构造一个ListView的普遍方法!

Adapter adpter = new MyAdapter(content,LayoutID,T[]);

listView.setAdapter(adpter);

//首先要构造一个适配器Adapter,content是当前的上下文,LayoutID就是传入的布局文件,可以通过R.layout.xx找到,这个布局文件,可以用作item的布局文件。就是说item的布局就是这个布局文件里面的布局,我们可以通过这个布局来设置我们item的布局,T[]是一个数组,可以往item里面填数据的。

一个实例,要每个item里面都有一个TextView。

自定义一个Adapter:

  

public class MyAdapter extends ArrayAdapter<String> {

    //传进来的布局文件ID
private int resouceID; Context context; public MyAdapter(Context context, int textViewResourceId, String[] objects) {
super(context,textViewResourceId, objects); resouceID = textViewResourceId; this.context = context;
}    //这个函数很重要,是绘制每个Item的时候调用的,返回的View用来构造item
@Override
public View getView(int position, View convertView, ViewGroup parent) {     
    //这一步其实我自己都有点难理解,就是获取到了传进去的那个T[]数组的T[position]
    String city = (String)getItem(position);      //每个Item是一个view
View view;     //给view设置布局,就是我们传进来的那个布局,这样设置之后,每个item就是我设置的布局文件的布局了
view = LayoutInflater.from(getContext()).inflate(resouceID,null);     //找到布局中的TextView
TextView cityname = (TextView)view.findViewById(R.id.itemtext);     
cityname.setText(city);
    
    //返回View用来构造item
    return view; }
}

自定义的布局文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" > <TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/itemtext"
android:gravity="center"
android:textSize="40dp" /> </RelativeLayout>

在onCreate里面里面设置ListView:

Adapter adpter = new MyAdapter(content,LayoutID,T[]);

listView.setAdapter(adpter);

整个代码比较简洁,也比较简单,只是简述了一般的思路。这个例子中只是把item里面弄个TextView,像复杂的Item只要在布局文件里多弄控件,然后在Adapter里面找到控件进行处理就好了,整体的思路都是一样的。

												

自定义ListView里面的Item的内容的更多相关文章

  1. 如果你的NavigationDrawer里面的Item没有响应,Drawer不能左滑关闭

    如果你的NavigationDrawer里面的Item没有响应,Drawer不能左滑关闭,应该是因为你没有把主要内容放在DrawerLayout标签下的第一位. The main content vi ...

  2. 如何获取listview里面的edittext或者RadioGroup的值,涉及到引发的混乱现象

    最近要实现从数据库读数据,该数据对应listview的item布局里面的RadioButton值,并且item布局里面还有EditText的控件. 如何将每一条对应的listview对应值获取出来呢? ...

  3. 文件重命名之动态改动ListView里指定Item中的组件属性

    在Android实际开发过程中常常会遇到,改动ListView中某一项的值.怎样达到这一目的呢? 方法主要有两种: 第一种方式:当ListView中某一项的值发生变化之后,又一次载入数据已达到更新Li ...

  4. Qt编程之通过鼠标滚轮事件缩放QGraphicsView里面的Item

    首先自己subclass QGraphicsView的一个类,叫DiagramView,然后重新实现它的滚轮事件函数,然后发送一个缩放信号: oid DiagramView::wheelEvent(Q ...

  5. 获取comboBox里面的item使用的方法

    使用currentIndex()或者currentText() void Widget::calc() { int first = ui->firstLineEdit->text().to ...

  6. Android ListView实现不同item的方法和原理分析

    ListView实现不同item的方法和原理分析 一问题抛出Listview是android里面的重要组件,用来显示一个竖向列表,这个没有什么问题:但是有个时候列表里面的item不是一样的,如下图,列 ...

  7. 自定义listview的步骤

    1.定义一个实体类: public class Fruit { private String name; private int imageId; public Fruit(String name, ...

  8. Android复杂自定义Listview实现

    在Android中实现Listview对新人来说比较难以理解,本人看了若干文章后觉得可以使用以下思路来让新人更好理解(同时也做好记录,免得自己以后忘记). 可参考博客:http://cinderell ...

  9. android自定义listview实现圆角

    在项目中我们会经常遇到这种圆角效果,因为直角的看起来确实不那么雅观,可能大家会想到用图片实现,试想上中下要分别做三张图片,这样既会是自己的项目增大也会增加内存使用量,所以使用shape来实现不失为一种 ...

随机推荐

  1. time模块详解

    本文转自这里: 在Python中,与时间处理有关的模块就包括:time,datetime以及calendar.这篇文章,主要讲解time模块. 在开始之前,首先要说明这几点: 在Python中,通常有 ...

  2. 【lightoj-1025】The Specials Menu(区间DP)

    题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1025 [题目大意] 求一个字符串删去任意字符可以构成多少个不同的回文串 [分析 ...

  3. TCPL学习毕节:第六章hash表

    对于P126的哈希表构成: struct nlist *install(char *name, char *defn) { struct nlist *np; unsigned hashval; if ...

  4. 不安装APK直接启动应用

    相信这样一个问题,大家都不会陌生, “有什么的方法可以使Android的程序APK不用安装,而能够直接启动”. 发现最后的结局都是不能实现这个美好的愿望,而腾讯Android手机游戏平台却又能实现这个 ...

  5. UI-UIButton、UILable、UITextField总结

    UIButton按钮====================================================== 第一.UIButton的定义 UIButton *button=[[U ...

  6. Java丨简单的登录过滤器实现方法

    过滤过滤,实际就是把需要和不需要的东西分开! 今天来说道说道我们程序中的‘登录过滤器’ ,首先我们看看一下面的问题: 1.“登录过滤器”是干什么用的? 1)“登录过滤器”就是为了防止在用户没有登录的情 ...

  7. 《Drools7.0.0.Final规则引擎教程》第4章 4.2 agenda-group

    agenda-group 规则的调用与执行是通过StatelessKieSession或KieSession来实现的,一般的顺序是创建一个StatelessKieSession或KieSession, ...

  8. Intellij IDEA基于Springboot的远程调试

    简介 本篇博客介绍一下在Intellij IDEA下对Springboot类型的项目的远程调试功能.所谓的远程调试就是服务端程序运行在一台远程服务器上,我们可以在本地服务端的代码(前提是本地的代码必须 ...

  9. Arcgis Android API开发之离线地图

    最近一直在倒腾Arcgis Android API等相关的东西,想把自己的做的图放到地图上去,也就是离线地图,穷人一般是没有钱的,一个月好几十的流量是开不起的,所以就左捉摸,右思考,看着API里面有离 ...

  10. hashlib摘要算法模块,logging日志,configparser配置文件模块

    一.hashlib模块(摘要算法模块) 1.算法介绍 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢? 摘要算法又称哈希算法.散列算法.它通过一个函数,把 ...