Android Studio绑定下拉框数据详解

效果显示:


1、页面xml代码(项目的代码,直接复制会有错,自己修改一下就好)

<TextView
 android:id="@+id/consultation_tv_section"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_above="@+id/consultation_et_doctor"
 android:layout_alignLeft="@+id/consultation_tv_phone"
 android:layout_alignStart="@+id/consultation_tv_phone"
 android:layout_marginBottom="8dp"
 android:text="挂号科室:"
 android:textColor="@color/black"
 android:textSize="18sp"
 android:textStyle="bold" />

<Spinner
 android:id="@+id/consultation_et_section"
 android:layout_width="260dp"
 android:layout_height="40dp"
 android:layout_alignLeft="@+id/consultation_et_phone"
 android:layout_alignStart="@+id/consultation_et_phone"
 android:layout_below="@+id/consultation_et_phone"
 android:layout_marginTop="22dp"
 android:background="@drawable/input_bg"
 android:ems="10"
 android:inputType="textPersonName"
 android:paddingLeft="15dp"
 android:paddingRight="15dp"
 android:spinnerMode="dialog" />

2、java创建自定义参数

Spinner consultation_et_section;//挂号科室:

3、获取选择控件(Spinner)

consultation_et_section = (Spinner) findViewById(R.id.consultation_et_section);

4、获取JSON数据和绑定数据,可以参考前一篇文章

(1)、创建自定义参数

List<String> listMemDoctorData = null;

(2)、获取数据和绑定数据

/**
 * 获取JSON医生信息数据
 */
public void findDoctorData(int sectionId){
 AsyncHttpClient client = new AsyncHttpClient();
 client.get(AbAppConfig.DATA_URL + "appGVConsultation/findDoctorData?sectionId="+sectionId, null, new AsyncHttpResponseHandler() {
  @Override
  public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
   try {
    JSONObject object = new JSONObject(new String(responseBody));//获取json数据
    JSONArray jsonArray = object.getJSONArray("obj");//获取数据集名称为obj的数据
    Log.d("jsonArray数据输出:", String.valueOf(jsonArray));
    listMemDoctor = new ArrayList<>();
    for (int i = 0; i < jsonArray.length();i++) {
     MemDoctor doctor = MemDoctor.doctorData(jsonArray.getJSONObject(i));//把数据存在novels集合中
     if (doctor != null){
      listMemDoctor.add(doctor);
     }
    }

    if (jsonArray.length() > 0){
     listMemDoctorData = new ArrayList<>();
     doctor_id = listMemDoctor.get(0).id;//获取第一个医生的ID
     for (int i = 0; i < listMemDoctor.size(); i++){
      MemDoctor section = listMemDoctor.get(i);
      listMemDoctorData.add(section.doctorName);
     }

     //建立 Adapter并且绑定数据源
     ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(GV_Consultation.this, android.R.layout.simple_spinner_item, listMemDoctorData);
     //设置样式
     arrayAdapter.setDropDownViewResource(android.R.layout.simple_list_item_single_choice);
     //绑定 Adapter到控件
     consultation_et_doctor.setAdapter(arrayAdapter);
    }else {
     consultation_et_doctor.setAdapter(null);
     doctor_id = 0;
     Toast.makeText(GV_Consultation.this, "该科室没有医生信息数据", Toast.LENGTH_SHORT).show();
    }

   } catch (JSONException e) {
    Toast.makeText(GV_Consultation.this, "数据请求失败,请稍后重试", Toast.LENGTH_SHORT).show();
   }
  }

  @Override
  public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
   //请求失败的回调处理
   Toast.makeText(GV_Consultation.this, "请链接网络,稍后重试", Toast.LENGTH_SHORT).show();
  }
 });
}

5、创建点击事件

//医生选择点击事件
consultation_et_doctor.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
 @Override
 public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
 doctor_id = listMemDoctor.get((int) id).id;//获取选择医生的ID
 }
 @Override
 public void onNothingSelected(AdapterView<?> parent) {
 }
});

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 详解Android的MVVM框架 - 数据绑定

    本教程是跟着 Data Binding Guide学习过程中得出的一些实践经验,同时修改了官方教程的一些错误,每一个知识点都有对应的源码,争取做到实践与理论相结合. Data Binding 解决了 Android UI 编程中的一个痛点,官方原生支持 MVVM 模型可以让我们在不改变既有代码框架的前提下,非常容易地使用这些新特性.其实在此之前,已经有些第三方的框架可以支持 MVVM 模型,无耐由于框架的侵入性太强,导致一直没有流行起来. 准备 Android Studio 更新到 1.3 版

  • Android ListView数据绑定显示的三种解决方法

    首先,创建一个用于显示一个item的layout,名为item.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

  • Android中的SQL查询语句LIKE绑定参数问题解决办法(sqlite数据库)

    由于考虑到数据库的安全性,不被轻易SQL注入,执行查询语句时,一般不使用直接拼接的语句,而是使用参数传递的方法.然后在使用参数传递的方法中时,发现当使用like方式查询数据时,很容易出现一个问题. 错误案例: 复制代码 代码如下: String myname = "abc";String sql = "select * from mytable where name like '?%'";Cursor cursor = db.rawQuery(sql, new St

  • Android中 自定义数据绑定适配器BaseAdapter的方法

    复制代码 代码如下: public class PersonAdapter extends BaseAdapter { private List persons;// 要绑定的数据 private int resource;// 绑定的一个条目界面的id,此例中即为item.xml private LayoutInflater inflater;// 布局填充器,它可以使用一个xml文件生成一个View对象,可以通过Context获取实例对象 public PersonAdapter(Conte

  • Android RecyclerView 数据绑定实例代码

    前言 在上一个项目里有很多很多很多很多的RecyclerView,然后我需要写很多很多很多很多的Adapter和Viewholder--多倒没问题,但是里面有很多重复的代码这就不能忍了!每一个Adapter和ViewHolder其实做的事情非常的像:视图绑定,数据绑定,点击事件分发.还有啥?既然它们做的事情都一样,为啥我们还要傻傻的继续写着重复的代码? 正文 BaseAdapter 通常我们要创建一个RecyclerView.Adapter是怎么做的? 接收一个数据列表 重写getItemCou

  • Android Data Binding数据绑定详解

    去年谷歌 I/O大会上介绍了一个非常厉害的新框架DataBinding, 数据绑定框架给我们带来了很大的方便,以前我们可能需要在每个Activity里写很多的findViewById,不仅麻烦,还增加了代码的耦合性,如果我们使用DataBinding,就可以抛弃那么多的findViewById,省时省力.说到这里,其实网上也有很多快速的注解框架,但是注解框架与DataBinding想比还是不好用,而且官网文档说DataBinding还能提高解析XML的速度,其实DataBinding的好用,不仅

  • Android Studio绑定下拉框数据详解

    效果显示: 1.页面xml代码(项目的代码,直接复制会有错,自己修改一下就好) <TextView android:id="@+id/consultation_tv_section" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/consultation_et_doctor&qu

  • yii2带搜索功能的下拉框实例详解

    简单的小功能,但是用起来还是蛮爽的.分享出来让更多的人有更快的开发效率,开开心心快乐编程. 如果你还没有使用过composer,你可就out了,看我的教程分享,composer简直就是必备神奇有木有.都说到这个点上了,我们赶紧使用composer进行安装吧. 先给大家展示下效果图: 下面给大家说下具体实现思路: composer require kartik-v/yii2-widget-select2 "@dev" #特别说明,因为这里安装的dev版本,也就是开发版本,不稳定版本,如果

  • Vue使用枚举类型实现HTML下拉框步骤详解

    下拉框包含option中的Value和用来显示的选项, 一般后台都是使用的Value值,而不是显示在前台的选项 第一步: 编写下拉框需要的枚举类型 StatusEnum.java public enum StatusEnum { RED, YELLOW, GREEN } 第二步: 编写用来存放下拉框中对应的option中的Value和显示的选项 StatusDTO.java public class StatusDTO { private String code; private String

  • bootstrap suggest下拉框使用详解

    bootStrap suggest js下拉框的使用,供大家参考,具体内容如下 HTML <div class="modalTop" id="suit_name_div"> <p>选择商品:</p> <%@ include file="dataJs/item/itemSuggest.jsp" %> </div> itemSuggest.jsp <%@ page language=&

  • Android中Spinner(下拉框)控件的使用详解

    android给我们提供了一个spinner控件,这个控件主要就是一个列表,那么我们就来说说这个控件吧,这个控件在以前的也看见过,但今天还是从新介绍一遍吧. Spinner位于 android.widget包下,每次只显示用户选中的元素,当用户再次点击时,会弹出选择列表供用户选择,而选择列表中的元素同样来自适配器.Spinner是View类得一个子类. 1.效果图 2.创建页面文件(main.xml) <Spinner android:id="@+id/spinner1" and

  • Android第三方开源下拉框NiceSpinner使用详解

    android原生的下拉框Spinner基本上可以满足Android开发对于下拉选项的设计需求,但现在越来越流行的下拉框不满足于Android原生提供的下拉框Spinner所提供的设计样式,而改用自定制或者第三方设计的下拉框Spinner. NiceSpinner是一个第三方开源的下拉框Spinner,其在github上的项目主页是:https://github.com/arcadefire/nice-spinner  NiceSpinner原设计效果如动图所示: 但是通常开发者对于可能还需要对

  • Android实现联动下拉框二级地市联动下拉框功能

    日常使用软件中,为了方便且规范输入,会使用到下拉框进行输入,如注册时生日选项,购物时的地址输入,都会用到下拉框,今日笔者为了巩固已学的知识,实现了二级联动下拉框用作回顾及分享给求知的新手. 思路/步骤: 在实现联动下拉框之前,我们先对用到的ArrayAdapter和数据的封装作必要的了解,Android 中提供了很多适配器的实现类,其中ArrayAdapter就其中之一.它可以通过泛型来指定要适配的数据类型,然后在构造函数中把要适配的数据传入.如: ArrayAdapter<CharSequen

  • 解决Jquery下拉框数据动态获取的问题

    废话不多说,直接上源码: select.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+&q

  • Python之Django自动实现html代码(下拉框,数据选择)

    我就废话不多说了,还是直接看代码吧! #模板 class IndexForm(forms.Form): # 模板,用户提交的name和这里的变量名一定要是一致的.否则不能获取数据 user = forms.CharField(min_length=6, error_messages={'required': '用户名不能为空', 'min_length': '用户名长度不能小于6'}) email = forms.EmailField(error_messages={'required': '邮

  • Eclipse工程转为兼容Android Studio模式的方法步骤图文详解

    方法/步骤 准备好需要转换的工程 , 最好是新建一个文件夹 , 然后将主工程和依赖工程放到同一个目录 屏幕快照 2016-12-24 12.43.02.png 在eclipse中导入主工程和依赖工程 , 导入之后最好先跑一遍 , 确定没有问题再继续操作 屏幕快照 2016-12-24 12.40.03.png 在主工程上右键导出 屏幕快照 2016-12-24 12.53.51.png 将工程导出为Generate Gradle build files , 这一步很重要哦 , 只有导出为这个模式

随机推荐