一:布局文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".Activity5"android:padding="20dp"><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="获取listView中下拉框和输入框的值"android:textSize="23sp"android:gravity="center"/><HorizontalScrollViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerVertical="true"android:layout_marginTop="50dp"android:layout_marginBottom="100dp"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"><TextViewandroid:layout_width="80dp"android:layout_height="wrap_content"android:text="编号"android:gravity="center"android:padding="3dp"android:background="@drawable/bg_border_tab"/><TextViewandroid:layout_width="100dp"android:layout_height="wrap_content"android:text="姓名"android:gravity="center"android:padding="3dp"android:background="@drawable/bg_border_tab"/><TextViewandroid:layout_width="60dp"android:layout_height="wrap_content"android:text="年龄"android:gravity="center"android:padding="3dp"android:background="@drawable/bg_border_tab"/><TextViewandroid:layout_width="60dp"android:layout_height="wrap_content"android:text="性别"android:gravity="center"android:padding="3dp"android:background="@drawable/bg_border_tab"/><TextViewandroid:layout_width="90dp"android:layout_height="wrap_content"android:text="是否回家"android:gravity="center"android:padding="3dp"android:background="@drawable/bg_border_tab"/><TextViewandroid:layout_width="150dp"android:layout_height="wrap_content"android:text="回家方式"android:gravity="center"android:padding="3dp"android:background="@drawable/bg_border_tab"/></LinearLayout><ListViewandroid:id="@+id/list"android:layout_width="wrap_content"android:layout_height="wrap_content"/></LinearLayout></HorizontalScrollView><Buttonandroid:id="@+id/btn_submit"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="提交"android:layout_above="@+id/btn"/><Buttonandroid:id="@+id/btn"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="返回"android:layout_alignParentBottom="true"/>
</RelativeLayout>

二:自定义ListView适配器EditSpinnerAdapter

package com.example.test.tools;import android.content.Context;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;import com.example.test.Activity5;
import com.example.test.R;
import com.example.test.entity.Dict;import java.util.List;
import java.util.Map;public class EditSpinnerAdapter extends BaseAdapter {private Context context;private List<Map<String, String>> list;private Map<String, List<Dict>> map;private LayoutInflater inflater;public EditSpinnerAdapter(Context context, List<Map<String, String>> list, Map<String, List<Dict>> map) {this.context = context;this.list = list;this.map = map;inflater = LayoutInflater.from(context);}@Overridepublic int getCount() {return list.size();}@Overridepublic Object getItem(int position) {return position;}@Overridepublic long getItemId(int position) {return 0;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder holder = null;if (convertView == null) {holder = new ViewHolder();convertView = inflater.inflate(R.layout.list, null);holder.go_home = convertView.findViewById(R.id.go_home);holder.way = convertView.findViewById(R.id.way);holder.number = convertView.findViewById(R.id.number);holder.name = convertView.findViewById(R.id.name);holder.age = convertView.findViewById(R.id.age);holder.gender = convertView.findViewById(R.id.gender);SpinnerArrayAdapter adapter = new SpinnerArrayAdapter(context, map.get("go_home"));holder.go_home.setAdapter(adapter);holder.go_home.setOnItemSelectedListener(new MyOnItemSelectListener(holder.go_home, holder.way));holder.way.addTextChangedListener(new MyTextChangListener(holder.way));convertView.setTag(holder);} else {holder = (ViewHolder) convertView.getTag();}holder.number.setText(list.get(position).get("number"));holder.name.setText(list.get(position).get("name"));holder.age.setText(list.get(position).get("age"));holder.gender.setText(list.get(position).get("gender"));holder.go_home.setTag(position);holder.way.setTag(position);return convertView;}class ViewHolder {Spinner go_home;EditText way;TextView number;TextView name;TextView age;TextView gender;}/*** 下拉框点击事件,点击之后对输入框进行相应控制*/private class MyOnItemSelectListener implements AdapterView.OnItemSelectedListener {private Spinner spinner;private EditText editText;public MyOnItemSelectListener(Spinner spinner, EditText editText) {this.spinner = spinner;this.editText = editText;}@Overridepublic void onItemSelected(AdapterView<?> parent, View view, int position, long id) {String num = ((Dict)spinner.getSelectedItem()).getDictCode();if (num.equals("0")) {editText.setHint("必填项不能为空");editText.setEnabled(true);editText.setText("");} else {editText.setHint("默认为空");editText.setEnabled(false);editText.setText("");}int index = (int) spinner.getTag();((Activity5)context).saveSpinner(index, num);}@Overridepublic void onNothingSelected(AdapterView<?> parent) {}}/*** 监听输入框内容变化,并将输入内容传出*/private class MyTextChangListener implements TextWatcher {private EditText editText;public MyTextChangListener(EditText editText) {this.editText = editText;}@Overridepublic void beforeTextChanged(CharSequence s, int start, int count, int after) {}@Overridepublic void onTextChanged(CharSequence s, int start, int before, int count) {}@Overridepublic void afterTextChanged(Editable s) {int index = (int) editText.getTag();((Activity5)context).saveEditText(index, s.toString());}}
}

自定义ListView适配器EditSpinnerAdapter的布局文件list.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="horizontal"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/number"android:layout_width="80dp"android:layout_height="match_parent"android:gravity="center"android:padding="3dp"android:textSize="15sp"android:background="@drawable/bg_border"/><TextViewandroid:id="@+id/name"android:layout_width="100dp"android:layout_height="match_parent"android:gravity="center"android:padding="3dp"android:textSize="15sp"android:background="@drawable/bg_border"/><TextViewandroid:id="@+id/age"android:layout_width="60dp"android:layout_height="match_parent"android:gravity="center"android:padding="3dp"android:textSize="15sp"android:background="@drawable/bg_border"/><TextViewandroid:id="@+id/gender"android:layout_width="60dp"android:layout_height="match_parent"android:gravity="center"android:padding="3dp"android:textSize="15sp"android:background="@drawable/bg_border"/><LinearLayoutandroid:layout_width="90dp"android:layout_height="match_parent"android:background="@drawable/bg_border"><Spinnerandroid:id="@+id/go_home"android:layout_width="match_parent"android:layout_height="match_parent"/></LinearLayout><EditTextandroid:id="@+id/way"android:layout_width="150dp"android:layout_height="match_parent"android:gravity="center"android:padding="3dp"android:textSize="15sp"android:background="@drawable/bg_border"/>
</LinearLayout>

三:自定义下拉框适配器SpinnerArrayAdapter

package com.example.test.tools;import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;import com.example.test.R;
import com.example.test.entity.Dict;import java.util.List;public class SpinnerArrayAdapter extends BaseAdapter {private Context context;private List<Dict> list;private LayoutInflater inflater;public SpinnerArrayAdapter(Context context, List<Dict> list) {this.context = context;this.list = list;this.inflater = LayoutInflater.from(context);}@Overridepublic int getCount() {return list.size();}@Overridepublic Object getItem(int position) {return list.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {Text text = null;if (convertView == null) {text = new Text();convertView = inflater.inflate(R.layout.spinner, null);text.text_id = convertView.findViewById(R.id.text_id);text.text_name = convertView.findViewById(R.id.text_name);convertView.setTag(text);} else {text = (Text) convertView.getTag();}text.text_id.setText(list.get(position).getDictCode());text.text_name.setText(list.get(position).getDictName());return convertView;}class Text {TextView text_id;TextView text_name;}
}

自定义下拉框适配器SpinnerArrayAdapter的布局文件spinner.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="horizontal"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/text_name"android:layout_width="wrap_content"android:layout_height="wrap_content"android:padding="3dp"android:layout_marginLeft="10dp"/><TextViewandroid:id="@+id/text_id"android:layout_width="wrap_content"android:layout_height="wrap_content"android:visibility="invisible"/></LinearLayout>

四:创建实体类Dict保存字典用于下拉框数据源

package com.example.test.entity;public class Dict {public String dictName;public String dictCode;public String getDictName() {return dictName;}public void setDictName(String dictName) {this.dictName = dictName;}public String getDictCode() {return dictCode;}public void setDictCode(String dictCode) {this.dictCode = dictCode;}
}

五:调用

package com.example.test;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;import com.example.test.entity.Dict;
import com.example.test.tools.EditSpinnerAdapter;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class Activity5 extends AppCompatActivity {List<Map<String, String>> submit = new ArrayList<>();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);setContentView(R.layout.activity_5);initView();}private void initView() {Button btn = findViewById(R.id.btn);btn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {finish();}});/*** 模拟list数据*/Map map1 = new HashMap();map1.put("name", "张三");map1.put("age", "18");map1.put("gender", "男");map1.put("number", "001");submit.add(map1);Map map2 = new HashMap();map2.put("name", "翠花");map2.put("age", "16");map2.put("gender", "女");map2.put("number", "002");submit.add(map2);Map map3 = new HashMap();map3.put("name", "李四");map3.put("age", "20");map3.put("gender", "男");map3.put("number", "003");submit.add(map3);Map map4 = new HashMap();map4.put("name", "熊大");map4.put("age", "32");map4.put("gender", "男");map4.put("number", "004");submit.add(map4);/*** 模拟字典*/List<Map<String, String>> dicts = new ArrayList<>();Map<String, String> map5 = new HashMap<>();map5.put("dict_code", "0");map5.put("dict_name", "是");map5.put("tp_code", "go_home");map5.put("cancel_status", "0");dicts.add(map5);Map<String, String> map6 = new HashMap<>();map6.put("dict_code", "1");map6.put("dict_name", "否");map6.put("tp_code", "go_home");map6.put("cancel_status", "0");dicts.add(map6);/*** 获取字典并保存*/Map<String, List<Dict>> map_enable = new HashMap<>();for (Map<String, String> m : dicts) {List<Dict> lists = new ArrayList<>();Dict dict = new Dict();if (m.get("cancel_status").equals("0")) {dict.setDictCode(m.get("dict_code"));dict.setDictName(m.get("dict_name"));if (map_enable.containsKey(m.get("tp_code"))) {lists = map_enable.get(m.get("tp_code"));lists.add(dict);} else {lists.add(dict);}map_enable.put(m.get("tp_code"), lists);}}ListView listView = findViewById(R.id.list);EditSpinnerAdapter adapter = new EditSpinnerAdapter(Activity5.this, submit, map_enable);listView.setAdapter(adapter);Button btn_submit = findViewById(R.id.btn_submit);btn_submit.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(Activity5.this, submit.toString(), Toast.LENGTH_LONG).show();}});}/*** 获取下标值及下拉框的code* @param i list下标值* @param str 下拉框的code*/public void saveSpinner(int i, String str) {String code = str;submit.get(i).put("是否回家", code);}/*** 获取下标值及输入框的内容* @param i list下标值* @param str 输入框内容*/public void saveEditText(int i, String str) {String way = str;submit.get(i).put("回家方式", way);}
}

六:运行效果

listView中带下拉框和输入框如何获取值相关推荐

  1. EasyExcel在项目中的应用-在web中导出带下拉框和批注的excel文件

    前言 ​ 好长一段时间没有更新博客了,最近刚刚找到实习工作,接触了企业中的项目,在这段时间的实习过程中,终于知道了企业级项目的体量和业务难度跟之前的小项目是完全不同的.10多天的适应期也逐渐让我找到了 ...

  2. Excel表格下载模板(带下拉框选项)

    下载excel模板需要带下拉框选项,现在纯JAVA代码来实现 1.模板标题实体类 import cn.afterturn.easypoi.excel.annotation.Excel; import ...

  3. html input dropdown,Vue.js 带下拉选项的输入框(Textbox with Dropdown)组件

    带下拉选项的输入框 (Textbox with Dropdown) 是既允许用户从下拉列表中选择输入又允许用户自由键入输入值.这算是比较常见的一种 UI 元素,可以为用户提供候选项节省操作时间,也可以 ...

  4. SpreadJS表格中关于下拉框new GC.Spread.Sheets.CellTypes.ComboBox()的设置和使用

    SpreadJS表格中关于下拉框的设置和使用 Spreadjs使我们经常用到的一种表格插件,下面是自己使用中的一点心得,希望对大家有帮助,废话不所说,下面进入正题: 1.npm下载 @grapecit ...

  5. layui 数据表格下拉框_LayUi数据表格中嵌套下拉框

    layui嵌套下拉框实用方法(附效果图) 在做项目时遇到一个问题,在layui 的数据表格table里面如何做一个下拉框呢?效果图如下: 这样的效果想必是最理想的了 思路分析: 我们可以通过layui ...

  6. layui弹出层中添加下拉框

    layui弹出层中添加下拉框 实习不到两个月,踩到的坑 使用layui写了一个项目,负责其中的一小块,其中有一个页面需要在弹出层中写一个下拉框 代码如下: <div class="la ...

  7. excel中设置下拉框sheet关联

    excel中添加下拉框内容 1.直接输入来源,流程如下图 注:每个选项之间需要用英文逗号隔开. 2.通过引用方式,首先先准备好内容,再供引用. 流程如下 1.创建内容,选定创建的所有内容并设置其名称, ...

  8. 下拉框选中状态html,js中select下拉框选中

    怎么用js动态 设置select中的某个值为选中值 select 中的某个options为新建,但在子页面新建一个选项时怎么能提交新用JS动态设置select的方法如下: 手动通过原生JS来实现: / ...

  9. 使用EasyExcel导出带下拉框的Excel

    1. 创建注解 import java.lang.annotation.*;/*** 标注导出的列为下拉框类型,并为下拉框设置内容*/ @Documented @Retention(Retention ...

最新文章

  1. 【java】快速复制数组方法arraycopy的使用
  2. redis演练(5) redis持久化
  3. 2020年高等数学方法与提高(上海理工大学)学习笔记:向量代数与空间解析几何
  4. linux read01,Linux内置命令之read
  5. mysql中计算问题_MYSQL 数学运算符问题
  6. 透明度百分比换算十六进制
  7. .NET系列 之 开源和不开源的背后
  8. sun服务器操作系统使用,SUN ILOM使用指南
  9. 05CRecordset类
  10. 使用inspector功能查看和管理契约
  11. CSS 如何让li横向居中显示
  12. 【PPT分享】阿里巴巴定向广告之新一代Rank技术.pdf(附下载链接)
  13. JQuery的$.extend()的源码
  14. 清华霸榜,长沙理工异军突起!第三届 CCF CCSP落下帷幕
  15. mysql连接 xorm_使用go xorm来操作mysql的方法实例
  16. Java基础2讲义四千字总结---黑马刘意
  17. 乔布斯在斯坦福大学的毕业典礼上做的一次精彩的演讲
  18. JS中的一些条件判断语句
  19. 利用PS进行图片格式及位数变换
  20. 备忘 Linux 快速分区

热门文章

  1. 用 html标签实现 word 的下标效果
  2. 移除Linux体系下不需求的效劳
  3. android 背景色阴影,Android 阴影背景的四种实现方式
  4. X64dbg正确使用姿势
  5. 快充协议和充电插头、充电宝
  6. Content root being added Content entries should not intersect.
  7. 东方雨虹总市值首次突破1000亿;巴黎珠宝蔻尔珮将在中国销售三个标志性系列 | 美通企业日报...
  8. 时间的几个单位(以备查阅)
  9. 合规羊毛党小贴士,谈谈award caculator
  10. js字符串拼接 ·${}·