Android高级控件之ListView

Android开发系列——实战篇13:Listview列表视图 本文讲述Android开发中有关Listview列表视图的操作。 目录一、Listview简介二、Listview基本操作1.Listview适配器概述2.ArrayAdapter实现文本列表 一、Listview简介 Listview列表视图是在Android开发中很重要的一个控件。因为有的时候由于手机屏幕的限制,不能一下子呈现出所有的内容,Listview列表视图提供了一个列表形态的下拉框,这样通过滑动行为就能查看到所有的内容。 通过Listview展示的基本步骤是: 展示空间:一个view item 阅读详情

        Android高级控件有ListView(列表视图)、GridView(格子视图)、SeekBar(拖动条)、Gallery(画廊);其实Gallery用的很少。那么这次我们来学习ListView的使用吧! 在 Android中,ListView是用来显示列表的控件。

       要让ListView为你所用,你需要三件法宝,一:监听事件反馈的方法,二:两种加载运行ListView的方法,三:三种适配器(Adapter)的使用。好了,我们一件件法宝来学吧!

       法宝一:既然是列表控件,那么和用户互动是必不可少的,互动就会有事件的触发;如果用户通过单击列表的任意条目有事件反馈,那么我们就需要注册一个OnItemClickListener来接听事件。

       法宝二:加载ListView有两种方法,第一种继承Activity,自己实现ListView标记(ID);第二种事继承ListActivity,系统实现ListView标记(ID)。

       法宝三:通过上面讲的两种方式来使用ListView控件时,都要通过适配器(Adapter)来设置显示列表的内容,可以使简单的数组ArrayAdapter,可以是复杂的游标SimpleCursorAdapter,也可以采用继承BaseAdapter来自定义绑定数据进行显示,BaseAdapter它本身是一个抽象类,实现了ListAdapter和 SpinnerAdapter,并且是ArrayAdapter和SimpleAdapter的父类,我们通过它可以更加随心 的定制各种视图。

      法宝三很重要,那么接下来详细讲解法宝三里的各个适配器(Adapter)的使用且有相应的代码例子。先从简单的开始,顺序为:数组ArrayAdapter,集合SimpleAdapter,游标SimpleCursorAdapter,自定义BaseAdapter。

<--------------------------------------------------------------------------------------------------------ArrayAdapter----------------------------------------------------------------------------------------------------------->

        ArrayAdapter最为简单,话说它只能展示一行行的字或图片。默认情况下只能显示文本,如果想显示其他的View控件,比如ImageView需要重写getView方法,通常是将一个数组或者集合放在中ArrayAdapter。Adapter三个参数,第一个参数表示引用当前上下文,第二个参数表示列表条目显示的布局,这里我们调用了系统的布局,第三个参数表示要绑定显示的数据。代码例子如下:

activity_list.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="match_parent"
    android:orientation="vertical">

    <ListView
        android:id="@+id/id_list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</LinearLayout>
Activity类
 
package com.xhm.dell.mylistview; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.Toast; /* 这里我们用到法宝二的第一种方法加载ListView,简称靠自己  */ public class ListActivity extends Activity { //定义一个ListView成员变量来接受ListView对象  private ListView initListView;  //定义数组并初始化  private String[] idList={"一月","二月","三月","四月","五月","六月",  "七月","八月","九月","十月","十一月","十二月"};  @Override  protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);  setContentView(R.layout.activity_list);  //通过ID获得实例  initListView=(ListView) findViewById(R.id.id_list);  initData();  } //初始化Adapter并将其绑定到ListView控件上  private void initData(){ //实例化一个数组,  //Adapter三个参数,第一个参数表示引用当前上下文,第二个参数表示列表条目显示的布局  //这里我们调用了系统的布局,第三个参数表示要绑定显示的数据。  ArrayAdapter<String> arrays=new ArrayAdapter<String>(this,  android.R.layout.simple_list_item_1,idList);  //调用ListView控件的方法绑定  initListView.setAdapter(arrays);  //通过局部类来实例化单击条目的监听器  initListView.setOnItemClickListener(onItemClickListener);  } AdapterView.OnItemClickListener onItemClickListener=new AdapterView.OnItemClickListener() { @Override  //parent 绑定的Adapter,view 条目的显示,position 对应的位置,id 条目的id。  public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //通过Toast来响应列表条目的单击事件  Toast.makeText(ListActivity.this,"点击的位置是"+position,  Toast.LENGTH_SHORT).show();  } }; } 

                                                效果图

<-------------------------------------------------------------------------------------------SimpleAdapter--------------------------------------------------------------------------------------->

      SimpleAdapter有最好的扩充性,可以定义出各种效果。使用的数据一般都是HashMap构成的List,List的每一节对应ListView的每一行。HashMap的每个键值数据映射到布局文件中对应ID的组件上。因为系统没有对应的布局文件可用,可以自定义一个布局vlist.xml。使用SimpleAdapter可以自定义ListView的列表项,需要5个参数:

  第一个参数:context对象;

  第二个参数:List<? ExtendsMap<String,?>>集合对象

  第三个参数:指定一个界面布局的ID

  第四个参数:是一个String[]类型的参数

  第五个参数:是一个int[]类型的参数

activity_list

<?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="match_parent"
    android:orientation="vertical">

    <ListView
        android:id="@+id/id_list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</LinearLayout>

layout_list.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="match_parent"
    android:orientation="vertical">

    <RelativeLayout
        android:id="@+id/id_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <ImageView
            android:layout_width="150dp"
            android:layout_height="200dp"
            android:id="@+id/id_imageView"
            android:layout_alignParentTop="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="100dp"
            android:text="New Text"
            android:id="@+id/id_textView"
            android:layout_alignParentTop="true"
            android:layout_toRightOf="@+id/id_imageView"
            android:layout_toEndOf="@+id/id_imageView" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="100dp"
            android:text="New Text"
            android:id="@+id/id_textView2"
            android:layout_below="@+id/id_textView"
            android:layout_toRightOf="@+id/id_imageView"
            android:layout_toEndOf="@+id/id_imageView" />

    </RelativeLayout>
</LinearLayout>

package com.xhm.dell.mylistview;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class InitActivity extends Activity {

    //数据源头像图片、昵称、签名
    private int initImage[]={R.drawable.kan,R.drawable.qq1,R.drawable.shui,
            R.drawable.bi1,R.drawable.bi2,R.drawable.bi3,R.drawable.bi4};
    private String initname[]={"一月","二月","三月","四月","五月","六月","七月"};
    private String qianming[]={"我可爱不","么么哒","萌萌哒","棒棒哒",
            "呵呵哒","热菜","小姐姐"};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list);
        //获得实例
        ImageView initImageView=(ImageView) findViewById(R.id.id_imageView);
        TextView initTextView=(TextView) findViewById(R.id.id_textView);
        TextView initTextView2=(TextView) findViewById(R.id.id_textView2);
        ListView listView=(ListView) findViewById(R.id.id_list);
        //对象集合(这里不懂的童鞋请回去看JAVA集合哈)
        List<Map<String,Object>> initList=new ArrayList<Map<String,Object>>();
        Map<String,Object> initMap;
        for (int i = 0; i < initname.length; i++) {
            initMap=new HashMap<String,Object>();
            initMap.put("initImage",initImage[i]);
            initMap.put("initname",initname[i]);
            initMap.put("qianming",qianming[i]);
            initList.add(initMap);
        }
        SimpleAdapter initAdapter=new SimpleAdapter(this,initList,
                R.layout.layout_list,//这个布局要注意,别搞错了
                new String[]{"initImage","initname","qianming"},
                new int[]{R.id.id_imageView,R.id.id_textView,R.id.id_textView2});
        //把Adapter绑定到ListView控件上(这步很重要,别漏)
        listView.setAdapter(initAdapter);
    }
    
}

      这里讲下,鄙人发现一个问题,SimpleAdapter 和ListView继承ListActivity的加载方式(法宝二第二种)不和,两者存在排斥关系。鄙人尝试过了,this.setListAdapter(initAdapter);// 这个报错,大家可以尝试一下,还请多多指教!

<---------------------------------------------------------------------------------------SimpleCursorAdapter----------------------------------------------------------------------------------->

       SimpleCursorAdapter可以认为是SimpleAdapter对数据库的简单结合,可以方面的把数据库的内容以列表的形式展示出来。SimpleCursorAdapter构造函数前面的3个参数和ArrayAdapter一样,最后两个参数:一个包含数据库的列的String型数组,一个包含布局文件中对应组件ID的int型数组,其作用是自动的将型数组所表示的每一列数据映射到布局文件对应ID的组件上。这个暂时不说,知识有限,还请原谅!

<-------------------------------------------------------------------------------------------BaseAdapter--------------------------------------------------------------------------------------->

      BaseAdapter话说这位姑娘好漂亮(开发用了各种Adapter之后感觉用的最舒服、最灵活的还是BaseAdapter),同时化妆比谁都复杂(尽管使用起来比其他适配器都麻烦),可是能有什么办法呢,她同时还能勾引好几个小鲜肉呢(她却能实现很多高级列表布局,比如ListView、ViewPager、GridView、Gallery、Spinner等等),咋都不说了,赶紧想办法娶她回家(有了她各种舒服)。但别忘了先了解人家背景呀(她是直接继承自接口类Adapter的)!人家也是有脾气的人(使用BaseAdapter必须写一个类继承它,同时BaseAdapter是一个抽象类,继承它必须实现它的方法),想要人家和你私奔是有条件的(使用BaseAdapter时需要重写很多方法,其中最重要的当属getView,因为这会涉及到ListView优化等问题),我们喜欢她漂亮又灵活之外,其实她最大亮点是容易理解大家的爱(ListView表现不仅仅在于展示数据,有时候还需要在里面加入按钮等控件,实现单独的操作,也不仅仅是这一行要来处理用户的操作,而是里面的控件要获得用户的焦点)。

     布局一:activity_list.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="match_parent"
    android:orientation="vertical">

    <ListView
        android:id="@+id/id_list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</LinearLayout>

layout_list.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="match_parent"
    android:orientation="vertical">

    <RelativeLayout
        android:id="@+id/id_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <ImageView
            android:layout_width="150dp"
            android:layout_height="200dp"
            android:id="@+id/id_imageView"
            android:layout_alignParentTop="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="100dp"
            android:text="New Text"
            android:id="@+id/id_textView"
            android:layout_alignParentTop="true"
            android:layout_toRightOf="@+id/id_imageView"
            android:layout_toEndOf="@+id/id_imageView" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="100dp"
            android:text="New Text"
            android:id="@+id/id_textView2"
            android:layout_below="@+id/id_textView"
            android:layout_toRightOf="@+id/id_imageView"
            android:layout_toEndOf="@+id/id_imageView" />

    </RelativeLayout>
</LinearLayout>

Activity类:

package com.xhm.dell.mylistview;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class BaseActivity extends Activity {
    //声明变量
    private ListView lv;
    private List<Map<String, Object>> data;
    //数据源头像图片、昵称、签名
    private int initImage[]={R.drawable.kan,R.drawable.qq1,R.drawable.shui,
            R.drawable.bi1,R.drawable.bi2,R.drawable.bi3,R.drawable.bi4};
    private String initname[]={"一月","二月","三月","四月","五月","六月","七月"};
    private String qianming[]={"我可爱不","么么哒","萌萌哒","棒棒哒",
            "呵呵哒","热菜","小姐姐"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list);
        //获得控件
        lv=(ListView) findViewById(R.id.id_list);
        //获取将要绑定的数据设置到data中
        data = getData();
        //获得实例化的适配器
        MyAdapter adapter = new MyAdapter(this);
        //把Adapter绑定到ListView控件上(这步很重要,别漏)
        lv.setAdapter(adapter);
        //通过局部类来实例化单击条目的监听器
        lv.setOnItemClickListener(oCL);

    }
    /**添加一个得到数据的方法,方便使用*/
    private List<Map<String, Object>> getData() {
        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
        Map<String, Object> map;
        /**为动态数组添加数据*/
        for(int i=0;i<initname.length;i++) {
            map = new HashMap<String, Object>();
            map.put("img", initImage[i]);
            map.put("title",initname[i]);
            map.put("info", qianming[i]);
            list.add(map);
        }
        return list;//返回集合
    }
    //ViewHolder静态类
    static class ViewHolder {
        public ImageView img;
        public TextView title;
        public TextView info;
    }
    /** 新建一个类继承BaseAdapter,实现视图与数据的绑定*/
    public class MyAdapter extends BaseAdapter{
        //得到一个LayoutInfalter对象用来导入布局
        private LayoutInflater mInflater = null;
        /**构造函数*/
        private MyAdapter(Context context) {
            //根据context上下文加载布局,这里的是Demo17Activity本身,即this
            this.mInflater = LayoutInflater.from(context);
        }

        @Override
        public int getCount() {
            //How many items are in the data set represented by this Adapter.
            //在此适配器中所代表的数据集中的条目数
            return data.size();
        }

        @Override
        public Object getItem(int position) {
            // Get the data item associated with the specified position in the data set.
            //获取数据集中与指定索引对应的数据项
            return position;
        }

        @Override
        public long getItemId(int position) {
            //Get the row id associated with the specified position in the list.
            //获取在列表中与指定索引对应的行id
            return position;
        }

        //Get a View that displays the data at the specified position in the data set.
        //获取一个在数据集中指定索引的视图来显示数据
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder holder = null;
            //如果缓存convertView为空,则需要创建View
            if(convertView == null) {
                holder = new ViewHolder();
                //根据自定义的Item布局加载布局
                convertView = mInflater.inflate(R.layout.layout_list, null);
                /**得到各个控件的对象*/
                holder.img = (ImageView)convertView.findViewById(R.id.id_imageView);
                holder.title = (TextView)convertView.findViewById(R.id.id_textView);
                holder.info = (TextView)convertView.findViewById(R.id.id_textView2);
                //将设置好的布局保存到缓存中,并将其设置在Tag里,以便后面方便取出Tag
                convertView.setTag(holder);
            }else {
                //取出ViewHolder对象
                holder = (ViewHolder)convertView.getTag();
            }
            /**设置TextView显示的内容,即我们存放在动态数组中的数据*/
            holder.img.setBackgroundResource((Integer)data.get(position).get("img"));
            holder.title.setText((String)data.get(position).get("title"));
            holder.info.setText((String)data.get(position).get("info"));
            //返回convertView
            return convertView;
        }


    }
    /**可以在此添加点击事件*/
    AdapterView.OnItemClickListener oCL=new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Toast.makeText(BaseActivity.this,position+"月",Toast.LENGTH_SHORT).show();
        }
    };
}

ListView优化暂时不说,陆续更新中。。。。。。。。。

O(∩_∩)O谢谢!

{"appid":"1200008950","splash":"3002702943485168","banner":"1022403963484946","screen":"8082602993796192","market":{"ali":"0","baidu":"0","huawei":"0","kuan":"0","oppo":"0","qq":"0","samsung":"0","dev360":"0","vivo":"0","xiaomi":"0"}}

Workbench中基于nCode的列车转向架随机振动疲劳寿命预测方法 本文详细介绍了在ANSYS Workbench中结合nCode进行列车转向架随机振动疲劳寿命预测的完整方法。通过几何清理、模态分析、PSD载荷定义及随机振动求解,并重点阐述了nCode中Dirlik等疲劳算法的选择与应用,为轨道交通关键部件的可靠性设计提供了系统的仿真分析流程与工程实践指导。 阅读详情

相关推荐

GprMax正演模拟:为什么你的反射波‘消失’了?可能是直达波在捣鬼(附Python后处理脚本)

本文深入探讨了GprMax正演模拟中反射波信号被直达波淹没的现象,并提供了Python后处理脚本的实战指南。通过时域置零、自适应增益控制、频域滤波等多种技术,有效增强反射波信号,帮助用户解决探地雷达模拟中的常见问题。文章还包含详细的代码示例和效果评估方法,适合GPR数据处理的研究人员和工程师参考。

weixin_29305313的博客 232

Android--高级控件--ListView&GridView

ListView使用示例 项目结构 布局文件 activity_main.xml <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-

weixin_46858088的博客 2563

AISHELL-2 中文语音数据库

AISHELL-1 is by far the largest open-source speech corpus available for Mandarin speech recognition research. It was released with a baseline system containing solid training and testing pipelines for Mandarin ASR. In AISHELL-2, 1000 hours of cle

AI_SHELL的博客 7887

【Android入门到项目实战--3.4】—— ListView控件的使用

Android入门到项目实战—— ListView控件的使用、简单使用、进一步使用、对代码优化提高效率、ListView控件的点击事件的使用

个人博客 4471

C# WinForm和Sherlock进行对接

文章目录 前言 一、使用步骤 二、使用步骤 1.引入库 2.读入数据 总结 前言 本人公司最近在做一款瑕疵检测的视觉项目,项目中利用Sherlock从相机中取图和对图像进行视觉处理,然后将图像和数据传输到项目中。这过程中软件需要和Sherlock进行图像和数据的传递,这就需要WinForm和Sherlock进行对接,但我在网上查找了许久能用上的资料十分有限,所以我决定写下这篇文章,来做一次总结,同时也希望能帮助到同样在为此问题困扰的你。 一、使用步骤 废话不...

adminmmrt的博客 3221

12、每日卫星任务规划问题的不同公式

本文探讨了卫星任务规划问题的多种数学公式表示方法,包括传统的整数线性规划(ILP)模型、改进的基于路径的公式、基于集合覆盖的公式以及动态规划公式。通过案例研究比较了不同公式的求解效率和适用场景,并提供了使用Python进行实际求解的操作步骤。最后讨论了进一步优化策略及未来研究方向,旨在为解决卫星任务规划问题提供全面的理论支持和实践指导。

assembly8low的博客 203

Android开发listview控件使用

使用listview 需要做3件事 1、定义一个给listview专用的布局(需新建布局文件) 2、创建一个列表适配器,用于将数据和控件绑定 (一共有三种 ArrayAdapter,SimpleAdapter和SimpleCursorAdapter) 3、创建一个数据源(可以使用LIST数组) 这里介绍SimpleAdapter的使用,因为SimpleAdapter有最好的扩充

IT男也疯狂 716

21、空间数据处理中的克里金方法及应用

本文介绍了空间数据处理中的克里金方法,特别是带外部漂移的克里金法(KED)及其在遥感数据融合和支持变化问题中的应用。讨论了克里金方法的基本原理、优缺点以及在不同空间分辨率遥感图像融合中的具体操作流程。同时,还涉及了地统计数据融合和支持变化问题的解决方案,包括块克里金法、面到点克里金法和多边形克里金法等。

gold的博客 86

android控件开发之ListView

android控件开发之ListView 本文主要讲述安卓开发中的ListView控件的使用方法 java代码: package com.example.listview; import java.util.ArrayList; import java.util.HashMap; import android.app.ListActivity

Winter专栏 768

【Bug已解决】claude: command not found 解决方案

方案适用场景推荐指数添加 PATH全局 bin 目录确实存在但未加入 PATH⭐⭐⭐⭐⭐nvm 重新安装多 Node 版本切换导致失效⭐⭐⭐⭐⭐Windows 环境变量检查Windows 平台专用⭐⭐⭐⭐原生安装脚本想彻底避开 npm PATH 问题⭐⭐⭐⭐清理多重 Node 安装系统里有多套 Node 管理方式冲突⭐⭐⭐报错的核心是npm 全局安装的可执行文件路径没有正确出现在系统的 PATH 环境变量里,而不是安装本身失败了。

一键难忘的博客 1万+

PMP--工件

合同是指对双方都有约束力的协议,强制卖方提供规定的产品、服务或结果,以及强制买方支付相应的费用。它还可能包括处于中间状态的特性,例如已设计但尚未构建的特性、质量保证中的特性或测试中的特性。RACI 矩阵是一种常见的方法,用于显示执行、担责、咨询或知情,且与项目活动、决策和可交付物有关的干系人。计划是提议的实现某种目标的方式。在项目开始前或开始时创建的文件,涉及与项目有关的战略、商业或高层级的信息。或 © 它们是用特定方法创建的结果,例如,虽然成本估算结果是一个重要工件,它们是用不同估算方法得出的结果。

stqer的博客 1665

android高级控件ListView

android高级控件目标内容:1、ListView列表控件 2、自定义适配器Adapter 3、ListView 4、ListView实现图文混排 5、ListView集合网络HTTP操作*强调一下线性布局,水平时,左右对其生效!垂直时,上下对其生效!GridView组件;以网格方式排列视图,与矩阵类似(相册)android:numColums = "auto_fit";//最大的列数(

sinat_24196195的博客 596

静态编译Qt5源码(Kylin-Desktop-V10-SP1-2203-LoongArch64+qt5.15.16)

之前的文档,记录的是通用情况,本次笔者记录下Qt5的静态编译过程,供有需要的小伙伴参考使用的操作系统是Kylin-Desktop-V10-SP1-General-Release-2203-LoongArch64,处理器是龙芯3A5000,架构是loongarch。

aggs1990的专栏 1401

android高级控件(ListView) 列表控件

在strings中创建一个strings.xml,并定义字符串数组,用于当数据源 张三 李四 王五 张三丰 abc abb bbb 110 120 得到字符串数组: String[] d...

anhldd的博客 1222

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

安卓之高级控件Listview的优化

版权声明:本文为博主原创文章,未经博主允许不得转载。 效果图如下: XML代码(activity_main)如下: [html] view plain copy xml version="1.0" encoding="utf-8"?>  LinearLayout xmlns:android="http://schemas.android.c

qq_35852939的博客 223

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Android高级控件之AutoCompleteTextView,MultiAutopleteTextView,Spinner,ListView,ExpandableListView

Android中的高级控件要比普通控件的实现效果要好很多,有些样式是可以自动生成的,不需要再去写过多复杂化的代码,虽然说高级并不是说就很难学习,只要你把它琢磨透其实是很简单的,应为许多控件的使用差不多都是一样的思路,只要你搞懂了思路,你就会了。下面来了解下吧。 1.AutoCompleteTextView(自动完成文本框)    自动完成文本框也就是自动补全,我们一般在搜索中会遇见只要

phy1997的博客 639

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Android高级控件之Listview

1、Listview:列表控件,使用的时候高度和宽度最好是match-parent,此外,代码中使用还需要结合适配器。 2、ListView的使用及优化:(1) 使用ConvertView重用组件,即拖动时被遮住、看不见的控件,重用它,而非每次创建一个新的对象。当ListView第一次加载的时候,前面的数据ConvertView肯定是为null,所以我们在使用ConvertView对象的时候,先要...

Niexiaoya的博客 209

Android的高级控件——ListView

1:初始化控件   2:数据源  List   3:适配器      ArrayAdapter   1:context XXX.this,布局(自己R.layout.xxx/自带android.R.layout.xxx),数据);      SimpleAdapter  (1:上下文,数据源List>,布局R.layout.xxx,String[] int[]) 纯文字——Arr

lv_888的博客 297

android高级控件-ListView

1.ListView的基本用法 效果: 可以上下滑动,点击下载可以弹出吐司框 布局只需要使用这个控件设个id然后用java代码使用 布局代码: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools

qq_37879101的博客 340

Android控件之高级控件——ListView、cardView、屏幕适配

一:ListView 1.什么是ListView 如下通过一行行列表视图展示数据的一种控件,应用场景比如通讯录、短信列表、聊天联系人、文件夹列表、评论列表、应用列表等 2.Layout中如何实现ListView 第一步:layout中创建ListView <?xml version="1.0" encoding="utf-8"?> <LinearLayout...

程序员一博 1914

Android高级控件(一)——ListView绑定CheckBox实现全选,添加和删除等功能

https://www.cnblogs.com/yfceshi/p/7061386.html

superastronaut的博客 181

Android 高级控件ListView用法

1.BaseAdapter:是所有适配器类的父类,可以对列表项进行最大限度的定制 1.1 自定义适配器中的方法 getCount getView getItem getItemId 1.2 LayoutInflater(布局解析器) –LayoutInflater有三种获得方式,资料中有详细介绍 用来把layout布局文件解析成一个View对象,不可以new,需要使用系统服务获得 inflater...

qq_43238210的博客 354

android listview高级,Android高级控件ListView和GridView原理分析

对于Android开发来说,ListView控件在应用开发中的作用是举足轻重的,它以列表的形式展示内容,并且能够根据数据长度自适应显示。列表数据的显示需要四个元素,分别为:(1)用来展示列表视图的ListView;(2)用来把数据映射到ListView上的Adapter(适配器);(3)提供给ListView展示的数据集;(4)数据展示的View界面模板。首先最常用的列表展示类型的控件自然是Lis...

weixin_30294759的博客 201

Android高级控件ListView

BaseAdapter:是所有适配器类的父类,可以对列表项进行最大限度的定制 1.1 自定义适配器中的方法 getCount getView getItem getItemId 1.2 LayoutInflater(布局解析器) –LayoutInflater有三种获得方式,资料中有详细介绍 用来把layout布局文件解析成一个View对象,不可以new,...

qq_43162517的博客 161
上一篇: Toast的简单实用
下一篇: Android四大组件之Service
小红妹
博客等级 码龄10年 151粉丝 116原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值