array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 自定义Adapter - 爱码网

在进行安卓开发的时候使用arrayadapter和simpleadapter显示数据的方式比较固定,如果我们想对listview进行更加丰富的展示,那么我们就要使用自定义adapter了,比如说使用自定义adapter可以实现item单双行背景颜色不同等,那么 我们就来看看如何自定义adapter吧

首先展示一张自定义adapter的步骤图(自己写的)

自定义Adapter

使用自定义adapter可以实现展示数据更加丰富的listview,我这里就暂且定位自定义listview了,首先第一步我们需要创建一个数据模型,这个数据模型通常是一个数据类,比如说的listview要展示一些用户的信息,那么你就要定义一个用户类,包含了用户的各个属性,我这里暂且定义了一个people类,如下

public class People {
    private String name;
    private String sex;
    private  int image;
    private String hobby;
    public int getImage() {
        return image;
    }
    public String getHobby() {
        return hobby;
    }
    public String getName() {
        return name;
    }
    public String getSex() {
        return sex;
    }
    public People(String name,String sex,int image,String hobby){
        this.name = name;
        this.image = image;
        this.sex = sex;
        this.hobby = hobby;
    }
}

由以上代码可以看出我们定义了一个数据类people类,包含了一个人的姓名,性别,头像和爱好,那么紧接着第二步我们要定义一个数据的布局样式,也即是创建一个xml文件用来显示数据,如何显示就如何设置这个布局,如下

<LinearLayout xmlns:andro
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:background="#848282">
    <ImageView
        android:layout_width="50dp"
        android:layout_height="match_parent"
        android:
        android:src="@mipmap/ic_launcher"/>
    <TextView
        android:layout_width="50dp"
        android:layout_height="match_parent"
        android:text="张三"
        android:textSize="24sp"
        android:gravity="center"
        android:/>
    <TextView
        android:
        android:layout_width="50dp"
        android:layout_height="match_parent"
        android:layout_marginLeft="10dp"
        android:text="男"
        android:textSize="24sp"
        android:gravity="center"
        android:textColor="#e41515"/>
    <TextView
        android:layout_width="200dp"
        android:layout_height="match_parent"
        android:text="喜欢打游戏"
        android:textSize="20sp"
        android:/>
</LinearLayout>
自定义Adapter

进行到这里我们就来到最重要的一步自定义adapter,这个步骤是要求我们创建一个类继承baseadapter,需要我们重写它的四个抽象方法,最重要的是他的getview方法代码如下

public class MyAdapter extends BaseAdapter {
    private int[] colors = new int[] { 0xff3cb371, 0xffa0a0a0 };
    //创建数据
    private List<People> mData;
    //创建布局管理器
    private LayoutInflater inflater;
    public MyAdapter(LayoutInflater inflater,List<People>data){
        this.mData = data;
        this.inflater = inflater;
    }
    @Override
    public int getCount() {
        return mData.size();
    }

    @Override
    public Object getItem(int position) {
        return position;
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        //获得listview中的view,也即是每一个item
        View view = inflater.inflate(R.layout.itemlistview,null);
        //获得一个自定义数据对象
        People people = mData.get(position);
        //获得自定义布局中每一个控件对象
        ImageView item_icon = (ImageView)view.findViewById(R.id.item_icon);
        TextView item_name = (TextView)view.findViewById(R.id.item_name);
        TextView item_sex = (TextView)view.findViewById(R.id.item_sex);
        TextView item_hobby = (TextView)view.findViewById(R.id.item_hobby);
        //将数据一一添加到自定义的布局中
        item_hobby.setText(people.getHobby());
        item_icon.setImageResource(people.getImage());
        item_name.setText(people.getName());
        item_sex.setText(people.getSex());
        int colorPos = position % colors.length;
        view.setBackgroundColor(colors[colorPos]);
        return view;
    }
}
要很好的掌握自定义adapter我觉得我们需要对这四个抽象方法与一个清楚地了解,接下来让我们一同看一下这四个抽象方法吧

第一个是getCount,这个方法是什么意思呢,count是总数的意思,所以这个方法代表获得数据的总数量,第二个方法和第三个方法我们直接返回position即可,最重要的是第四个方法getview方法,这个方法是整个自定义adapter的核心,它返回的是自定义布局中的每一个item的view,我们需要在这个方法中获得listview中的view,也即是每一个item,获得自定义布局中的每一个控件对象以及将数据一一添加到自定义的布局中,具体的大家可以仔细研究一下上面的代码,adapter是连接前端显示和后台数据的一个桥梁,所以我们在自定义adapter的时候也要重点处理布局(前端显示)和数据(后台数据)两部分内容,数据我们采用list集合,而集合中的每一项数据就是我们自定义的数据类的一个对象,这里是我们定义的people类。

以上代码显示的最终效果是

自定义Adapter









相关文章:

  • 2020-05-03
  • 2019-03-25
  • 2019-05-27
  • 2019-06-24
  • 2018-05-08
  • 2018-11-22
  • 2018-12-05
  • 2017-11-29
猜你喜欢
  • 2020-10-26
  • 2021-08-01
  • 2019-07-24
  • 2019-06-22
  • 2018-04-17
  • 2020-05-28
  • 2019-06-11
  • 2019-06-13
相关资源
相似解决方案