自定义列表视图

通过继承BaseAdapter写一个子类,可以创建自定义列表视图:

public class MyListAdapter extends BaseAdapter {

    private LayoutInflater mInflater;//声明一个LayoutInflater类变量

    private Context mContext;//声明一个Context类变量

    private List<Map<String,String>> mitem;//声明一个元素为<Map<String,String>>类型的List对象,存储testitem的值

    private Map<String,Integer> selectedtestItem = new HashMap<String,Integer>();//声明一个Map对象,用HashMap来实现

    private List<Map<String, String>> mData; // 声明一个元素为<Map<String,String>>类型的List对象,存储的editTex

    private Map<String, String> editorValue = new HashMap<String, String>();//声明一个Map对象,用HashMap来实现

    private List<Map<String,String>> mParameter;//用于保存parameter_edit参数值

    //private static HashMap<Integer, Boolean> isSelected;//声明一个HashMap<Integer,Boolean>类型的变量

    private String[] testItems;

    private String promptForSpinner[] = {"0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19"};

    

    public MyListAdapter(Context context,String[] testItems) {//构造函数

        // TODO Auto-generated constructor stub

        mInflater = LayoutInflater.from(context);//获得LayoutInflater

        this.testItems = testItems;

        puttestitemName();

    }

    private void puttestitemName()

    {

        for (String str : promptForSpinner) {

            selectedtestItem.put(str,0);

        }

        /*for(int i=0;i<20;i++){

            selectedtestItem.put("list_item_Name", 0);//allValues保存以项目名称为键值、0为数值的一系列成对的数据

        }*/

    }

    public void setData( List<Map<String, String>> data) {//初始化Lisr类型的对象

        mData = data;

        mParameter=data;

        init();

    }

    private void init() {//实现初始化List类型的对象的方法

        editorValue.clear();

        /*isSelected = new HashMap<Integer, Boolean>();

        if (mData != null) {

            for (int i = 0; i < mData.size(); i++) {

                isSelected.put(i, false);

            }

        }*/

    }

    public Map<String,Integer> getSelectedtestItem()

    {

    return selectedtestItem;

    }

    

    public List<Map<String,String>> getmData()

    {

    return mData;

    }

    public List<Map<String,String>> getmParameter()

    {

        return mParameter;

    }

    @Override

    public int getCount() {//获得List类型对象的长度;

        // TODO Auto-generated method stub

        if (mData != null) {

            return mData.size();

        }

        return 0;

    }

    @Override

    public Object getItem(int position) {

        // TODO Auto-generated method stub

        return null;

    }

    @Override

    public long getItemId(int position) {

        // TODO Auto-generated method stub

        return 0;

    }

    private Integer index = -1;//声明并初始化一个整型变量index

//AdapterListView界面与数据之间的桥梁。当列表里的每一项要显示时,都会调用AdaptergetView方法返回一个View

    @Override

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

        // TODO Auto-generated method stub

        Log.d("zhang", "position = " + position);//Log.d的输出颜色是蓝色的,仅输出debug调试的意思,但他会输出上层的信息,过滤起来可以通过DDMSLogcat标签来选择.

        final ViewHolder holder;

        if (convertView == null) {

            convertView = mInflater.inflate(R.layout.listitem, null);//实例化R.layout.listconverViewView对象

            holder = new ViewHolder();//ViewHolder就是一个静态类,使用它缓存了数据的视图(View),加快UI的响应速度。

            //holder.checkBox = (CheckBox) convertView

                    //.findViewById(R.id.checkbox);

            

            holder.testitemSpinner = (Spinner)convertView.findViewById(R.id.testitems_select);

            //if(holder.testitemSpinner.getCount()==0)

            //if(holder.testitemSpinner.getPrompt()==null)

            //{

                ArrayAdapter<String> a = new ArrayAdapter<String>(

                convertView.getContext(),android.R.layout.simple_spinner_item,testItems);

                holder.testitemSpinner.setAdapter(a);

            //}

            //holder.testitemSpinner.setTag(position);

            holder.testitemSpinner

            .setOnItemSelectedListener(new ItemClickSelectListener(

                    holder));//checkinfo_item_value(Spinner)添加ItemSelectedListener监听器

            holder.unit_text = (TextView) convertView.findViewById(R.id.unit_text);

            //holder.textView = (TextView) convertView.findViewById(R.id.text);

            holder.downbtn = (Button) convertView.findViewById(R.id.downbtn);

            holder.downbtn.setFocusable(false);

            holder.downbtn.setFocusableInTouchMode(false);

            holder.upbtn = (Button) convertView.findViewById(R.id.upbtn);

            holder.upbtn.setFocusable(false);

            holder.upbtn.setFocusableInTouchMode(false);

            holder.editbtn = (Button)convertView.findViewById(R.id.editbtn);

            holder.editbtn.setFocusable(false);

            holder.editbtn.setFocusableInTouchMode(false);

            /*times_edit控件*/

            holder.numEdit = (EditText) convertView.findViewById(R.id.times_edit);

            holder.numEdit.setTag(position);//numEdit添加一个格外的数据,使用getTag()可将数据取出;

            holder.numEdit.setOnTouchListener(new OnTouchListener() {

                @Override

                public boolean onTouch(View v, MotionEvent event) {

                    // TODO Auto-generated method stub

                    if (event.getAction() == MotionEvent.ACTION_UP) {

                        index = (Integer) v.getTag();

                    }

                    return false;

                }

            });

            /***********/

            /*parameter_edti控件*/

            holder.paraEdit = (EditText) convertView.findViewById(R.id.parameter_edit);

            holder.paraEdit.setTag(position);//numEdit添加一个格外的数据,使用getTag()可将数据取出;

            holder.paraEdit.setOnTouchListener(new OnTouchListener() {

                @Override

                public boolean onTouch(View v, MotionEvent event) {

                    // TODO Auto-generated method stub

                    if (event.getAction() == MotionEvent.ACTION_UP) {

                        index = (Integer) v.getTag();

                    }

                    return false;

                }

            });

            /*******/

            /*times_edit控件添加编辑响应*/

            class MyTextWatcher implements TextWatcher {

 

                public MyTextWatcher(ViewHolder holder) {

                    mHolder = holder;

                }

                private ViewHolder mHolder;

                @Override

                public void beforeTextChanged(CharSequence s, int start,

                        int count, int after) {

                    // TODO Auto-generated method stub

 

                }

                @Override

                public void onTextChanged(CharSequence s, int start,

                        int before, int count) {

                    // TODO Auto-generated method stub

                }

                @Override

                public void afterTextChanged(Editable s) {

                    // TODO Auto-generated method stub

                    if (s != null && !"".equals(s.toString())) {

                        int position = (Integer) mHolder.numEdit.getTag();

                        // EditText数据发生改变的时候存到data变量中

                        mData.get(position).put("list_item_timesvalue",

                                s.toString());

                    }

                }

            }

            holder.numEdit.addTextChangedListener(new MyTextWatcher(holder));

            /*********/

            /*parameter_edit控件添加编辑响应*/

            class ParaTextWatcher implements TextWatcher {

                public ParaTextWatcher(ViewHolder holder) {

                    mHolder = holder;

                }

                private ViewHolder mHolder;

                @Override

                public void beforeTextChanged(CharSequence s, int start,

                        int count, int after) {

                    // TODO Auto-generated method stub

 

                }

                @Override

                public void onTextChanged(CharSequence s, int start,

                        int before, int count) {

                    // TODO Auto-generated method stub

 

                }

                @Override

                public void afterTextChanged(Editable s) {

                    // TODO Auto-generated method stub

                    if (s != null && !"".equals(s.toString())) {

                        int position = (Integer) mHolder.numEdit.getTag();

                        // EditText数据发生改变的时候存到data变量中

                        mParameter.get(position).put("list_item_parameter",

                                s.toString());

                    }

                }

            }

            holder.paraEdit.addTextChangedListener(new ParaTextWatcher(holder));

            /********/

            holder.downbtn.setOnClickListener(new OnClickListener() {

                @Override

                public void onClick(View v) {

                    // TODO Auto-generated method stub

                    int position = (Integer) holder.numEdit.getTag();

                    Log.d("zhang", "clickposition = " + position);

                    String edittextStr = holder.numEdit.getText().toString();

                    int num = Integer.parseInt(edittextStr);

                    num--;

                    mData.get(position).put("list_item_timesvalue", num+"");

                    holder.numEdit.setText(num+"");

                }

            });

            holder.upbtn.setOnClickListener(new OnClickListener() {

                @Override

                public void onClick(View v) {

                    // TODO Auto-generated method stub

                    int position = (Integer) holder.numEdit.getTag();

                    String edittextStr = holder.numEdit.getText().toString();

                    int num = Integer.parseInt(edittextStr);

                    num++;

                    mData.get(position).put("list_item_timesvalue", num+"");

                    holder.numEdit.setText(num+"");

                }

            });

            convertView.setTag(holder);

        } else {

            holder = (ViewHolder) convertView.getTag();

            holder.numEdit.setTag(position);

            holder.paraEdit.setTag(position);

        }

        /*holder.checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {

            

            @Override

            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

                // TODO Auto-generated method stub

                int position = (Integer) holder.numEdit.getTag();

                isSelected.put(position, isChecked);//将对应position键值的数值设置为isChecked()返回的值

            }

        });

        holder.checkBox.setChecked(isSelected.get(position));//更新CheckBox的选择状态*/

        holder.testitemSpinner.setPrompt(promptForSpinner[position]);

        int spinnerOptionPosition = selectedtestItem.get(promptForSpinner[position]);

        holder.testitemSpinner.setSelection(spinnerOptionPosition);

        //if ((spinnerOptionPosition==4)||(spinnerOptionPosition==5))

            //holder.unit_text.setText("hz");

        //else

            //holder.unit_text.setText("__");

        

        Object value = mData.get(position).get("list_item_timesvalue");

        if (value != null && !"".equals(value)) {

            holder.numEdit.setText(value.toString());

        } else {

            holder.numEdit.setText("200");

        }

        holder.numEdit.clearFocus();

        if (index != -1 && index == position) {

            holder.numEdit.requestFocus();

        }

        Object value2 = mParameter.get(position).get("list_item_parameter");

        if (value2 != null && !"".equals(value2)) {

            holder.paraEdit.setText(value2.toString());

        } else {

            holder.paraEdit.setText("200");

        }

        holder.paraEdit.clearFocus();

        if (index != -1 && index == position) {

            holder.paraEdit.requestFocus();

        }

        return convertView;

    }

    

    /*public HashMap<Integer,Boolean> getIsSelected() {

return isSelected;

}*/

 

/*public void setIsSelected(HashMap<Integer,Boolean> isSelected) {

this.isSelected = isSelected;

}*/

    public class ViewHolder {

        Spinner testitemSpinner;

        Button editbtn;

        Button downbtn;

        EditText numEdit;

        EditText paraEdit;

        TextView unit_text;

        Button upbtn;

 

    }

    private class ItemClickSelectListener implements OnItemSelectedListener {

        //Spinner testitemSpinner;

        ViewHolder Iholder;

        //EditText Iedit;

        public ItemClickSelectListener(ViewHolder holder) {

            //this.testitemSpinner = testitemSpinner;

            this.Iholder = holder;

        }

        @Override

        public void onItemSelected(AdapterView<?> parent, View view,

                int position, long id) {

            //关键代码

            selectedtestItem.put(Iholder.testitemSpinner.getPrompt().toString(), position);

            /*根据所选的测试项目,改变第二参数的不同单位和信息*/

            if((position==4)||(position==5))

                Iholder.unit_text.setText("hz");

            else

                Iholder.unit_text.setText("un");

            if((position==0)||(position==1)||(position==2)||(position==6)||(position==7)||(position==8))

                {

                //Iholder.paraEdit.setText("null");

                Iholder.paraEdit.setVisibility(View.INVISIBLE);

                Iholder.unit_text.setVisibility(View.INVISIBLE);

                }

            else

                {

                //Iholder.paraEdit.setText("200");

                Iholder.paraEdit.setVisibility(View.VISIBLE);

                Iholder.unit_text.setVisibility(View.VISIBLE);

                }

            /***********/

            if(position==8)

                Iholder.editbtn.setVisibility(View.VISIBLE);

            else

                Iholder.editbtn.setVisibility(View.INVISIBLE);

 

            //int p = (Integer) testitemSpinner.getTag();

            //selectedtestItem.get(p).put("list_item_Name",

                    //position);

        }

        @Override

        public void onNothingSelected(AdapterView<?> arg0) {

        }

    }

}

 

ListView listView = (ListView) findViewById(R.id.list);

MyListAdapter mAdapter = new MyListAdapter(this,testItems);//testItems一个String数组;

listView.setAdapter(mAdapter);


 

转载于:https://www.cnblogs.com/zhlforhe/p/4794710.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/272964.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springmvc请求返回一个字符_SpringMVC系列之Web利器SpringMVC

课程简介&#xff1a;课程目标&#xff1a;了解SpringMVC和Spring的关系&#xff0c;能够使用SpringMVC框架开发自己的Web应用。整合Spring , SpringMVC , MyBatis搭建项目开发环境&#xff0c;理解三层架构和MVC模式适用人群&#xff1a;适合对Java基础知识应用自如&#xff0…

一次完整较为渗透过程

步骤一&#xff1a; 利用阿D浏览器通过https&#xff1a;//s.bt.gg 注入关键字扫描发现注入点&#xff1a; http://www.rqyl.gov.cn/*****.php?ID153 用啊D跑不出账号密码 步骤二&#xff1a; 手工注入http://www.rqyl.gov.cn/*****.php?ID153 and 11 、and12出错 猜字段ht…

计算机网络线路争用,计算机网络系统集成复习要点

计算机网络系统集成复习要点计算机网络系统集成复习要点1.在信息领域&#xff0c;对于系统集成一般分为软件集成、硬件集成和网络系统集成。2.按网络覆盖范围的大小&#xff0c;将计算机网络分为局域网(LAN)、城域网(MAN)、广域网(WAN)和互联网。3. 计算机网络拓扑结构是指一个…

v380pro设备连接失败_天猫精灵可以连接台式电脑使用吗?需要什么东西? 安装操作是哪几个步骤? 最好有图片解说!...

使用语音将天猫精灵调到【蓝牙配对】&#xff1b;打开电脑的蓝牙适配界面&#xff0c;让电脑找到天猫精灵&#xff0c;稍等片刻&#xff0c;点击【使用远程装置的扬声器聆听来自此PC的音频】后的连接&#xff1b;最后调整音量即可。以下是详细介绍&#xff1a;1、对天猫精灵说【…

IDE-Ecplise-代码注释 模版 编码规范 配色

说明&#xff1a; 代码注释主要用于方便代码后期维护&#xff0c;编码规范&#xff0c;增加代码阅读性和维护性。因网上看到的很多博客中片段局多&#xff0c;故整理后重写一篇&#xff0c;方便交流学习。 先看下加过注释模版后的效果。如上图所示&#xff0c;创建类&#xff0…

个人信息管理系统代码_学生信息管理系统(springboot + vue)

学生信息管理系统零、基础项目为前后分离项目1、前端(front-end)基于 vue-admin-template 开发2、后端(rear-end)Jdk8Maven3MySQL5.7SpringBoot2SQLYog一、功能模块图图片.png二、系统预览1、登录登录.png2、首页首页.png3、查看学生信息查看学生信息.png4、编辑学生信息编辑学…

苹果手机6s运营商在哪里显示无服务器,iPhone6s信号很弱或无服务如何解决【解决方法】...

很多果粉都遇到过自己的手机常常“无服务”或者信号很弱的情况。 iphone6s 信号很弱或无服务怎么办&#xff1f;iPhone手机信号不好的原因有很多&#xff0c;排除SIM卡&#xff0c;手机本身硬件故障等问题&#xff0c;你可以尝试以下方法“修复”你的手机信号问题。1、开关飞行…

72年属鼠48岁有一灾2020_李半仙推算:1972年虚岁48岁属鼠人,2020年干什么最能发财??...

李半仙推算:1972年虚岁48岁属鼠人&#xff0c;2020年干什么最能发财&#xff1f;&#xff1f;生肖属鼠的朋友&#xff0c;在未来&#xff0c;喜事接二连三&#xff0c;属鼠人能够得到财神赐福&#xff0c;一路大发特发&#xff0c;很快就会有发财致富的商机&#xff0c;加上属鼠…

vue怎么插入接口demo_前端学起来特别吃力,新人入前端怎么学?

最近知乎收到一些问题&#xff0c;问前端学起来吃力&#xff0c;连续更新几次回答的比较全了。现在整理下分享给掘金的小伙伴们。原知乎问题:前言前端工作两年多。大部分前端原理、框架都能完全运用。工作中几乎遇不到解决不了的问题&#xff08;除了那些恶心无法实现的需求&am…

w7怎么重启无限服务器,w7重启数据库服务器

w7重启数据库服务器 内容精选换一换WordPress是使用PHP语言开发的博客平台&#xff0c;用户可以在支持PHP和MySQL数据库的服务器上搭建属于自己的网站&#xff0c;本文教您通过华为云虚拟私有云、弹性云服务器和RDS MySQL数据库&#xff0c;轻松几步&#xff0c;在LAMP环境下搭…

顺德机器人应用与维修专业收入_保定万维科技技校专业课程巡礼——计算机应用与维修...

保定万维科技技工学校院校简介 / 专业设置 / 招生简章资助政策 / 在线报名点击上方蓝色字体【保定万维科技技工学校】关注我们专业简介&#xff1a;本专业培养适应企事业单位发展、应用的需要&#xff0c;具有扎实的计算机基础知识、计算机专业知识和较强的计算机办公自动化、数…

PC和服务器的IP地址信息DNS,PC和服务器的IP地址信息DNS

PC和服务器的IP地址信息DNS 内容精选换一换网站的访问与云服务器的网络配置、端口通信、防火墙配置、安全组配置等多个环节相关联。任意一个环节出现问题&#xff0c;都会导致网站无法访问。本节操作介绍网站无法访问时的排查思路。网站无法访问怎么办&#xff1f;如果打开网站…

abaqus生成adams柔性体_专栏 | HyperMesh_To_Abaqus接口——模型导入导出问题

作者介绍TechmanLXS硕士十余年工程经验擅长Hypermesh建模&#xff0c;Hyperworks全平台分析软件&#xff0c;abaqus软件。整车级被动安全(ls-dyna、Radioss)&#xff0c;零部件级(moldflow模流分析&#xff0c;塑料件联合仿真分析)。熟知汽车车身&#xff0c;内外饰&#xff0c…

knockoutJS学习笔记01:从拼接字符串到编写模板引擎

开篇 关于knockout的文章&#xff0c;园里已经有很多大神写过了&#xff0c;而且都写得很好。其实knockout学习起来还是很容易的&#xff0c;看看官网的demo和园里的文章&#xff0c;练习练习就可以上手了&#xff08;仅限使用&#xff0c;不包含研究源码&#xff09;。之所以想…

新乡台达服务器驱动器维修,台达DELTA伺服驱动器维修

与数控装置的接口电路无关。检查测量系统电缆连接正确、可靠&#xff0c;排除了电缆连接的问题。利用示波器检查位置测量系统的前置放大器EXE601/5-F的Ual和Ua*Ua1和Ua2输出波形&#xff0c;发现Ua1相无输出。进一步检查光栅输出(前置放大器EXE601/5-F的输入)信号波形&#xff…

60度斜坡怎么计算_【测绘】南方CASS土方计算方法—方格网法

01概述在我们的日常工作中&#xff0c;遇到大量的土方修正算的相关咨询&#xff0c;为什么CASS的方格网土方修正算&#xff0c;方格设定为10米和20米&#xff0c;修正算结果有很大差异呢&#xff1f;从软件计算原理、数据质量等方面进行分析&#xff0c;读了这篇文章&#xff0…

综合时如何插入scan_三综合环境试验箱维修时如何做出正确判断?

三综合环境试验箱维修时如何做出正确判断?三综合环境试验箱在试验的过程中&#xff0c;可以根据需要设定不同的温度情况&#xff0c;以便于为各种测试要求提供便利的条件。在测试一些材料结构或复合材料的时候&#xff0c;主要是利用其在瞬间高温情况或者是在极低温的连续环境…

mysql 判断字段为null表示 false 其它为true_日拱一卒,MySQL数据库 常用SQL优化技巧 十一式...

本文中所提到的SQL优化技巧均是基于Mysql 索引 BTree类型 。将从以下几个方面介绍常用的SQL优化技巧&#xff1a;避免在 WHERE 子句中使用 ! 或 <> 操作符。避免在 WHERE 子句中对索引列使用 %前缀模糊查询。避免在 WHERE 子句中对索引列使用 OR 来连接条件。避免在 WHER…

数字图像处理

题目&#xff1a;大规模图像中的目标检测与分类方法 在进行图像目标识别与跟踪时&#xff0c;摄像机所采集的图像&#xff0c;在成像、数字化以及传输过程中&#xff0c;难免会受到各种各样噪声的干扰&#xff0c;图像的质量往往会出现不尽人意的退化&#xff0c;影响了图像的视…

内容可编辑_让PDF像WORD一样自由编辑,好用的PDF编辑工具推荐

在日常工作中&#xff0c;我们经常要和PDF文件打交道。以往编辑PDF文件&#xff0c;比如修改文字等&#xff0c;需要下载专门的PDF编辑软件&#xff0c;通常编辑器都会超过200M&#xff0c;下载安装很麻烦&#xff0c;还会挤压电脑的储存空间&#xff0c;影响运行速度。当迅读P…