ListView与带EditText的item冲突问题

edittext输入超过长度自动缩小文字大小并动态记录可输入文字 立即下载

注意:在复用情况下冲突问题无法解决

网上所有的可能性与实现方式我都实验了一边,亲测当动态添加带有EditText的item时,如果使用了复用的方式,无论怎么处理ListView与EditText始终存在冲突。最后我的解决方式只有采用不复用的方式来处理,但滑动存在卡顿需要寻找其他实现方式,这里只是我比较蠢的一种解决方案。

问题

出现的问题主要是,焦点与数据状态保存问题。

分析

大家都知道,ListView的convertView其实始终只有第一屏的那几个,如果说你采用了复用的方式,滑动ListView则其他屏幕显示的item仍旧是第一屏的convertView,只是通过不停的在getView中反复赋值来让item显示相同或不同的效果。

这里需要做个解释,软键盘的伸缩,针对EditText的文字输入等都会造成ListView的重绘,getView方法不断执行,并且,ListView重绘会造成EditText的焦点变换,所以控制起来十分的棘手。

网上的操作是,针对EditText进行文字输入监听,通过保存输入完毕后的内容来重新赋值。有的使用的则是触摸监听来获取position等。这些方式,只要是不重绘的页面上都是正常显示的,也可正常保存数据。一旦复用,数据保存就会错乱,因为重绘操作会不断的走到这些监听里面,造成position的错乱导致存储的数据与position对不上。并且,我的需求是一个动态需求,如图所示:

0

点击新增一条的时候,新增一条输入框,新增的输入框获取到焦点并弹出键盘。点击删除的时候删除当前item并且保持别的EditText的数据状态不变。

实现起来真是巨麻烦,大概花了一天半的时间解决这个问题,但是还是没有达到最优化。但是我觉得如果你要复用的话那么这个问题应该不能解决。因为牵扯到EditText的焦点变化、文字输入以及键盘的弹出收起等都会导致重绘,你很难去把握这个焦点到底跳到哪里去了。

好那么我们只要看一个文件就好:适配器文件MainAdapter


public class MainAdapter extends BaseAdapter {

    private ArrayList<String> dataList;
    private EditTextWater watcher;
    private int add_tag = -1;//用于控制滑动状态输入法会弹起的bug

    public MainAdapter(ArrayList<String> dataList) {
        this.dataList = dataList;
    }

    /**
     * 手动新增一条数据
     *
     * @param sn
     * @param listView
     */
    public void addData(String sn, ListView listView) {
        add_tag = 1;
        dataList.add(sn);
        notifyDataSetChanged();
        listView.smoothScrollToPosition(getCount() - 1);//让ListView滚动到底部使新增的item可以看到
    }

    /**
     * 手动删除一条数据
     *
     * @param position
     */
    public void removeData(int position) {
        dataList.remove(position);
        notifyDataSetChanged();
    }

    @Override
    public int getCount() {
        return dataList.size();
    }

    @Override
    public Object getItem(int position) {
        return dataList.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(final int position, View convertView, final ViewGroup parent) {
        final ViewHolder holder = new ViewHolder();
        convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_edittext, parent, false);
        holder.tvNum = (TextView) convertView.findViewById(R.id.tv_num);
        holder.etNewAdd = (EditText) convertView.findViewById(R.id.et_new_add);
        holder.tvChangeTitle = (TextView) convertView.findViewById(R.id.tv_change_title);
        convertView.setTag(holder);
        watcher = new EditTextWater(position);
        holder.etNewAdd.addTextChangedListener(watcher);
        holder.etNewAdd.setText(dataList.get(position));
        holder.tvNum.setText(position + 1 + "");
        holder.etNewAdd.setSelection(dataList.get(position).length());//设置光标问题
        holder.tvChangeTitle.setText(R.string.delete);
        holder.tvChangeTitle.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                holder.etNewAdd.removeTextChangedListener(watcher);
                removeData(position);
            }
        });
        /**
         * 当前这里手动获取焦点
         * 但是实际输入法没有在这里弹出
         * 因此如果需要弹出输入法的时候就需要手动写一个
         */
        if (position == getCount() - 1 && add_tag == 1) {
            add_tag = -1;
            holder.etNewAdd.requestFocus();
            holder.etNewAdd.post(new Runnable() {
                @Override
                public void run() {
                    InputMethodManager imm = (InputMethodManager) parent.getContext().getSystemService(INPUT_METHOD_SERVICE);
                    imm.showSoftInput(holder.etNewAdd, InputMethodManager.SHOW_IMPLICIT);
                }
            });
        } else {
            holder.etNewAdd.clearFocus();
        }
        return convertView;
    }

    /**
     * 重新文字监听器
     * 保存当前输入的信息以保证滑动的时候EditText显示的文字同步
     */
    class EditTextWater implements TextWatcher {

        private int position;

        public EditTextWater(int position) {
            this.position = position;
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

        }

        @Override
        public void afterTextChanged(Editable s) {
            Log.i("usher", "afterTextChanged: " + position + "-" + s);
            dataList.set(position, s.toString());
        }
    }

    class ViewHolder {
        TextView tvNum;
        EditText etNewAdd;
        TextView tvChangeTitle;
    }
}

有几个地方比较难:
- 重写文字改变的监听,用于保存你最后一次输入的数据;
- 去除文字改变的监听,用于避免反复绘制item造成的position与数据不匹配;
- 针对新增的item的EditText中弹起键盘的监听与滑动时针对键盘不弹出的控制;

大家可以尝试使用复用convertView的方式来写ListView,你会发现,当绘制item超过一屏的时候,超出的部分中重绘的item中EditText所拿到的数据并不是上一次的数据了,因为反复绘制的时候导致了文字改变的监听始终执行,虽然有规律可循,但是我没有找到控制这一现象的方法。

最后贴上首页的代码:


public class MainActivity extends AppCompatActivity {

    private ListView lvMain;
    private MainAdapter adapter;
    private Button btn_add_new;
    private ArrayList<String> list;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);
        initView();
        initData();
    }

    private void initData() {
        list = getData();
        adapter = new MainAdapter(list);
        lvMain.setAdapter(adapter);
        btn_add_new.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                adapter.addData("", lvMain);
            }
        });
    }

    private void initView() {
        lvMain = (ListView) findViewById(R.id.lv_main);
        btn_add_new = (Button) findViewById(R.id.btn_add_new);
    }

    private ArrayList<String> getData() {
        ArrayList<String> list = new ArrayList<>();
        for (int i = 0; i < 2; i++) {
            list.add("input data from" + i);
        }
        return list;
    }
}

结语

以上方式的处理方法比较笨,同时还有另外一种处理方式,就是再ListView的外层套上一层ScrollView,然后重写ListView用于解决与ScrollView的冲突。但实际上这种处理方式与我所写的根本道理是一致的,都是再不断的新建item,并且友情提示,这种处理方式并不适用于大量的item,第一个较为明显的问题就是卡顿,因为你在滑动的时候,系统是再不停的新建与销毁,这需要较多的内存来处理,打开AS的内存可以看到这个页面的内存消耗还是不小的。当然如果有更优化的处理方式,欢迎留言。

Android完美解决listview中多个edittext显示混乱问题 Android完美解决listview中多个edittext显示混乱问题,内含源码及apk文件 立即下载

相关推荐

Kindle电子书DRM破解全攻略:从下载到转换的完整流程(含最新DeDRM插件配置)

本文详细介绍了如何合法移除个人购买的Kindle电子书的DRM保护,实现跨设备阅读与备份。核心内容包括使用最新DeDRM插件(如noDRM分支)配合Calibre进行配置,并针对亚马逊最新的KFX加密格式提供了密钥提取与实战操作指南。文章强调该方法仅适用于个人合理使用,旨在帮助读者真正掌控自己的数字资产。

delta的博客 576

ListView数据错位常见问题与解决方案

问题一:ListView中,复用机制导致EditView的输入数据错位?解决方法:在Adapter调用getView时为EditView设置相应的值1、默认清除所有EditView的焦点,即调用clearFocus()方法;holder.et.clearFocus();2、保存每个Item中EditView所对应的输入值,并在Adapter调用getView时进行setText()。holder....

Honiler的博客 1552

从单应矩阵到实际距离:Apriltag测距完整实现指南

本文提供了基于Apriltag实现高精度视觉测距与姿态估计的完整指南。详细阐述了从相机标定、单应矩阵分解到欧拉角与距离计算的完整流程,并深入探讨了四个解的歧义选择、工程实践中的滤波优化与多Tag融合等关键问题,旨在帮助开发者在机器人、AR等应用中实现稳定可靠的距离检测与姿态估计。

n7o8p的博客 559

解决android的EditView输入问题(这篇装载的blog有错误)

很多写登录界面的开发者都会遇到一个问题:那就是在登录界面时,当你点击输入框时,下边的按钮有时会被输入框挡住,这个不利于用户的体验,所以很多人希望软键盘弹出时,也能把按钮挤上去。很多开发者想要监听键盘的状态,这无疑是一个很麻烦的做法。        我们可以在AndroidManifest.xml的Activity设置属性:android:windowSoftInputMode = "adju

月神的专栏 1232

P4语言实战:如何用Barefoot Tofino实现自定义网络协议(避坑指南)

本文是一份详尽的P4语言实战指南,重点讲解如何利用Barefoot Tofino可编程交换芯片实现自定义网络协议。内容涵盖从P4编程模型解析、自定义协议头定义,到匹配-动作流水线构建、性能优化及生产环境部署的全过程,并特别分享了在资源管理、字节序、调试技巧等方面的宝贵避坑经验,旨在帮助网络开发者和研究人员掌握数据平面编程的核心能力。

echo99的专栏 640

FPGA时钟架构解密:从SRCC/MRCC到全局时钟树的实战指南

本文深入解析Xilinx 7系列FPGA时钟架构,从SRCC/MRCC引脚特性到全局时钟树设计,详细介绍了BUFG、BUFMR等关键组件的应用场景和优化策略。通过对比SRCC与MRCC的驱动范围及适用场景,提供低抖动时钟布线技巧和时钟域交叉(CDC)设计方法,帮助工程师构建高性能FPGA时钟系统。

weixin_29191081的博客 1484

解决listview 超出界面问题

listview的父View 属性是wrap_content时,有时会出现Listview超出界面不显示的问题,而且是超出几行,不确定。解决办法是在外面套一个LinearLayout(or other) 高度为match_parent。搞定! ...

海纳GIS专栏 2523

wps js宏获取工作簿、工作表、单元格的值、链接转图片、单元格区域数据转二维数组、保存工作簿的常用Excel操作

wps js宏入门看这里,我写了常用的js操作Excel的方法:获取工作簿对象、获取工作表对象、获取单元格的值、链接转图片、生成条形码图片、单元格区域数据转二维数组方法、保存工作簿、弹出输入框、YesNo选择框,助你从VBA转战JS。

huaermeier的博客 3万+

Android 自动适应字体大小的EditText

Android 中 EditText 单行显示时,如果字体过多,自动缩小字体,在字号小于指定字号时,显示"..." ,具体请参考如下代码:

yangqing_dt的专栏 3968

Zemax操作40--序列模式中LD光源模拟

LD模拟

lzy750750的博客 9121

beegfs读取文件完整流程分析

读取小于512KB文件数据,小于1s 读取15MB文件数据,花费7秒。

wfzy的博客 835

android listview editview冲突问题

1. 在activity中加入android:windowSoftInputMode="adjustPan"

zhlf91718的专栏 619

VS2019 C# 连接IBM DB2数据库并查询数据表

操作系统:win10 64位 C#:VS2019 数据库:IBM DB2v11.1_win64_expc 其他工具:IBM Data Studio ibm_ds4130_win 步骤一:使用命令行或是IBM DB2工具:Data Studio,创建一个数据库。这里名称为:Student CREATE DATABASE "Student" AUTOMATIC STORAGE YES ...

坚韧与专注 3796

ListView item中含 EditText,焦点冲突解决

当ListView item中含有Edittext 时,存在Edittext 获取不到焦点的情况,若像达到既能响应Item点击事件,Edittext 又能编辑,则提供一解决方案,仅供参考:一是为listview item 设置onTouch 事件,将item 中能获取焦点的子组件暂时失去焦点,二是设置item中子组件的onTouch事件,在事件处理中让其能重新获取焦点,三是在listview 所在

Android 学习 3434

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

深度学习工具包 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的item中嵌套多个EditText时的问题

项目需求:列表展示数据,同时可以修改,保存编辑过的数据(编辑某个数据时背景加深)。 问题1:当访问数据库,下载数据后使用adapter展示后,由于item中包含EditText,点击某一个EditText,该EditText获得焦点,光标显示,此时滚动listview会发现光标也会跑到别的item的EditText控件里面。 解决方案:在listview的onScrollChange...

aigfpy9575的博客 332

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

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

android listview edittext 焦点冲突,Android 解决ListView和 EditText焦点和软键盘问题

ListView是常用的列表控件,但有时我们会在Item中嵌套EditText控件的使用,这时就会出现列表无法滑动等问题。~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~我需要在自定义的Adapter文件中定义一个属性记录当前获取焦点Edittext所在的position,pri...

weixin_39849930的博客 230

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Android开发中ListView与EditText的冲突汇总

在Android开发中,有时候会遇到ListView中嵌套了一些EditText的情况,这个时候很容易发生一些冲突问题,解决方案列举如下。 点击EditText弹出软键盘导致EditText焦点丢失和文本重置问题 问题描述:点击EditText,弹出软键盘,会导致ListView调用getView()重绘,从而导致本来应该在EditText上的焦点被刷新而消失了,从而在软键

IT_ZJYANG的博客 7679

listview checkbox edittext 的共同使用

最近项目需求中有一个列表输入框,listview item中有checkbox edittext 共同使用其中的焦点问题和监听edittext输入内容的变化困扰了我好久,基础太差,没办法,无从下手,就从网上找了一些第三方开源的库来使用,结果都没有符合要求的,很是苦恼,终于功夫不负有心人,自己在优快云的博客里面直接搜索,就找到了自己改了一下就完全符合要求了,感谢开源,感谢优快云!下面就上代码:i

www121104115的博客 1445

Android ListView的item为CheckBox,EditText,Spinner的时候处理滑动数据错乱

MyAdapter 中的关键代码 package com.listviewtest; import android.content.Context; import android.text.Editable; import android.text.TextWatcher; import android.view.LayoutInflater; import android.view.View;...

qq_41618587的博客 505

ListView 与子item的冲突事件

ListView与EditText的冲突事件

觅梦云的专栏 582

解决LIstView与EditText冲突问题

解决LIstView与EditText冲突问题   最近遇到一个关于android软键盘的问题。在ListView中每个Item中都有个EditText,在最后的几个Item中,EditText第一次点击界面还能向上弹出,正常显示, 但第二次点击时,软件盘就把最后的几个Item给正当住了。这样很影响用户体验的。   其实解决的办法只要想一下...

weixin_30394669的博客 91

listview中的item和edittext强焦点问题怎么解决

listview中有一个EditText 因为Edittext容易抢夺listView中item的焦点 导致OnItemClick无法响应,于是我在xml文件中把editText的属性设置为setfocusable=false  但是又出现一个问题 用户在点击Edittext的时候 又无法响应点击事件 只有在点击了listview的item之后也就是响应了OnItemClickListener之

陈刚编程心得与知识集 653

android listview获取控件的值,android中关于使用ListView中如何获得其中EditText中从手机输入的值...

最近在做数据库的课程设计,使用了Android的SQLite来做,然后遇到了一些困难,其中一个就是焦点问题。当我们为一系列的数据绑定到一个ListView上进行显示的时候,会发生焦点碰撞的问题,比如能为每一个item添加点击事件并且有反应,但是当点击item里面的edittext的时候确实没有反应,这时候的editext的焦点应该是android:focusable="false",但是,当我们把...

weixin_32687311的博客 470

解决ListView中使用EditText所遇到的一些冲突

大家都知道在listView中使用editText,在输入过程中是有冲突的。今天稍微研究了一下这个问题,有一点点小小的心得和大家一起分享下。   首先建立一个最简单的demo,主界面就是一个ListView,其中list_item的布局代码如下: ? 1 2 3 4 5 6 7 8 9 10

xiaocheng2290的专栏 479

RecyclerView Item中有EditText时点击事件处理

RecyclerViewItem中有输入框时点击事件处理

Yyongchao的博客 1117

解决listView中的Item监听和item中按钮或者复选框的冲突问题

前段时间遇到了一个问题,lListView一直得不到OnItemClickListener监听,很苦恼,不知道是什么原因出现的这种问题。经过仔细查看,这次的ListView和以往的不同,这次的ListView的每一项多个一个复选框,从网上查到,复选框的OnCheckedChangeListener事件和ListView的OnItemClickListener时间有冲突,复选框的OnChecke...

huangbowen_java的专栏 218
上一篇: 从零开始学MVP架构 - 由更浅到浅
下一篇: MVP入门Demo - 登陆逻辑
HelloLollipop
博客等级 码龄9年 17粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值