码迷,mamicode.com
首页 > 其他好文 > 详细

详解Adapter(适配器)结合ListView

时间:2016-08-17 01:27:46      阅读:370      评论:0      收藏:0      [点我收藏+]

标签:

不是我针对谁,我只想针对新手玩家。

(括号里的内容都是我主观添加的,感觉还是不好理解请帮忙指出来谢谢!)

 

  • UI控件都是跟Adapter(适配器)打交道的
  • Adapter: 是用来帮助控件填充数据的中间桥梁 (在开发中大多数Textview控件的内容是依靠数据库传递并显示的如:新闻类)
  • Adapter: 将各种数据以合适的形式显示到view上 (我是显示图片的控件,你给我传文字是不是不想好了,分手!)
  • Adapter: 需要结合ListView, GridView等等集合类控件 (List 在学习java集合时应该已经碰到过了,Gridview九宫格不多做解释在博客园搜索一下一大堆的讲解)

 

将一个App页面分三大块:UI控件(View), 数据模式(model), 控制器 (Controller )它是Adapter的大哥。

  • Model:负责执行程序的核心运算与判断逻辑,通过view获得用户 输入的数据,然后根据从数据库查询相关的信息,最后进行运算和判断,再将得到的结果交给view来显示 (勤恳的管理员负责仓库的查询与整理)
  • view:用户的操作接口,说白了就是GUI,应该使用哪种接口组件,组件间的排列位置与顺序都需要设计 (画家利用,画笔“接口比较抽象”可以理解为怎么使用画笔要在屏幕上显示就必须知道要在哪里下笔(坐标))
  • Controller:控制器,作为model与view之间的枢纽,负责控制程序的执行流程以及对象之间的一个互动 (model跟view冷战了要靠我这个“灯泡”(Controller)传话,而且必须安原话传递)

Model(数据) ---> Controller(以什么方式显示到)---> View(用户界面)

View(我要显示图片,文字) --->Controller(分析她到底要什么,哦要图片) --->Model(搜索一下对应的图片信息)

MVC模式图

技术分享

 

 

Adapter亲属图(图片来源 http://www.runoob.com/w3cnote/android-tutorial-adapter.html)我也是在他这里学习并自己做一个简化记录加一点主观想法在里面。

技术分享

  • BaseAdapter:抽象类,实际开发中我们会继承这个类并且重写相关方法,用得最多的一个Adapter! 
  • ArrayAdapter:支持泛型操作,最简单的一个Adapter,只能展现一行文字~      //现在的视频教学里都是用这个类在作教学(我看到的是这样)
  • SimpleAdapter:同样具有良好扩展性的一个Adapter,可以自定义多种效果!
  • SimpleCursorAdapter:用于显示简单文本类型的listView,一般在数据库那里会用到,不过有点过时, 不推荐使用!
  • (该网站的作者这样说)其实一个BaseAdapter就够玩的了,至于其他的,实际开发中用得不多。“我是认同的”

准备开始敲代码,先上效果图

技术分享

java中的代码  先看下面的XML布局代码 然后在来打上面的java代码吧

步骤:结合代码看

  1. 创建String类型数组
  2. 创建ArrayAdapter<>适配器都是支持泛型的所以把String类型传进去
  3. 在新建的ArrayAdapter适配器中传入Content 以this表示, 在传入布局android.R.layout.simple_expandable_list_item这个布局是系统专门为ListView定制的你用就好了如果想深究里面的道理可以自己搜索一下这里就不强调了,最后就是传入strs数组咯
  4. 创建自己的ListView布局,在通过.setAdapter将适配器传进去,在上一步的过程中适配器里有什么?有上下文(环境) 有布局 有数据! 好了简单Adapter加ListView就完成了。       这里好像跟3楼的传入布局有点矛盾我也不清楚里面的机制不过我在看郭神的《第一行代码》中好像倒过解释不过有点模糊了记不清,现在书也不在手边。
package com.studio.yanzhichao.myadapterdemo;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //只是展示最简单运用 不过别以为它没什么用在一个设置页面不用显示太多数据时这就可以派上用场了,不过好像还有比这更好的、
        String[] strs = {"Adapter","Listview","设置","背景颜色","文字颜色"};
        //创建ArrayAdapter
        ArrayAdapter<String> adapter = new ArrayAdapter<String>
                (this,android.R.layout.simple_expandable_list_item_1,strs);
        //获取ListView对象,通过调用setAdapter方法为ListView设置Adapter设置适配器
        ListView list_test = (ListView) findViewById(R.id.demo_list);

        list_test.setAdapter(adapter);

    }
}

然后XML布局代码:特别简单就一个Listview

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    tools:context=".MainActivity">

   <ListView
       android:id="@+id/demo_list"
       android:layout_width="match_parent"
       android:layout_height="match_parent"

       >

   </ListView>
</LinearLayout>

(后面还会更新难的今天有点晚了。。。)

详解Adapter(适配器)结合ListView

标签:

原文地址:http://www.cnblogs.com/zhichaobouke/p/5778336.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!