文档章节

关于listview嵌套edittext显示错位的解决方法

 仇客
发布于 2016/12/29 17:23
字数 487
阅读 56
收藏 0

listview这个控件在Android的开发过程中运用得比较广泛,本意是用作展示数据,但在实际的开发过程中却可能和button,edittext等合用,那就会涉及到焦点问题,edittext展示错位的问题。在前段时间的项目开发中,自己也遇到了这些情况,自己也上网查了一些方法,也总结了自己的方法。

先来说说在网上查到的方法吧,就是通过标签来为每个item标明一个数据类,然后通过gettag取出数据类,然后改变其中的变量值。

代码如下:

class MyAdapter extends BaseAdapter(){

    private Context context;

    private List<Msg> msg = new ArrayList<Msg>();

    public class Message{

        EditText edit;

        public Message(View v){

            edit  = v.findViewById();

        }

    }

    public MyAdapter(Context context){

        this.context = context;

    }

    public int getCount(){

        return msg.size();

    }

    public Object getItem(int arg0){

        return null;

    }

    public long getItemId(int arg0){

        return null;

    }

    public View getView(int arg0,View arg1,ViewGroup arg2){

        final Message m;

        Msg ms = msg.get(arg0);

        if(arg1 == null){

            arg1 = LayoutInflater.from(context).inflater();

            m = new Msg(arg1);

            arg1.setTag(m);

        }else{

            m = (Message)arg1.getTag();

        }

        ms.edit.setTag(ms);

        ms.edit.setText();

    }

}

相信大家对listview会出现错位的现象的原因也有百度过吧,就是复用,那其实解决这个问题的办法简单粗暴一点就是把你要展示信息和position对应起来,我通过打印日志看出,界面展示出来的item和position是不一致的,也就是说,item会被复用,但position可以用作对应的标识。所以,我们可以把每个position值和数据类对应起来。

代码如下:

class MyAdapter extends BaseAdapter(){

    private Context context;

    private List<Msg> msg = new ArrayList<Msg>();

    public class Message{

        EditText edit;

        int id;

        public Message(View v){

            edit  = v.findViewById();

        }

    }

    public MyAdapter(Context context){

        this.context = context;

    }

    public int getCount(){

        return msg.size();

    }

    public Object getItem(int arg0){

        return null;

    }

    public long getItemId(int arg0){

        return null;

    }

    public View getView(int arg0,View arg1,ViewGroup arg2){

        final Message m;

        if(arg1 == null){

            arg1 = LayoutInflater.from(context).inflater();

            m = new Msg(arg1);

            arg1.setTag(m);

        }else{

            m = (Message)arg1.getTag();

        }

         m.id = arg0;

        ms.edit.setText();

    }

}

自己试验过没有错误

© 著作权归作者所有

共有 人打赏支持
粉丝 1
博文 5
码字总数 3077
作品 0
成都
私信 提问
ListView中Edittext焦点获取问题

今天做项目遇到一个问题,ListView嵌套EditText 当点击EditText的时候弹出软键盘,但是EditText却失去了焦点,不能输入,要再点击一次获取焦点后,才能够输入。 解决的办法是:在对应的ListV...

fxandroid
2016/12/16
18
0
Android开源实战:一个简单 & 好用的搜索框(含历史搜索记录)

前言 Android开发中,类似下图的搜索功能非常常见 搜索功能 今天,我将手把手教大家实现一款封装了 历史搜索记录功能 & 样式的Android自定义搜索框 开源库,希望你们会喜欢。 示意图 已在Git...

BillyLu1994
2018/04/28
0
0
android UI控件

1,关于text和drawableTop之类的间距 java代码里设置自定义的字体颜色 listView 2,商城分类浏览 列表单选效果 去掉分割线 设置list模式(含多个) 默认选中第一个 3,edittext属性 ,4,用于R...

东西南瓜西葫芦
2016/01/01
11
0
Android常见小问题汇总

1 问题: 登陆页面 输入时账号时 弹出键盘覆盖 密码输入框 期望:输入能够把输入页面顶上去。 解决方法:Activity设置成非全屏且:android:windowSoftInputMode = "adjustResize" 2 问题:点...

510202
2014/11/18
0
0
ListView嵌套ListView后出现的子项ListView显示问题

最近做的一个项目中出现了需要显示内容加留言的需求,就像微信朋友圈那样,内容下方要显示用户的留言信息,第一时间想到l了ListView嵌套ListView的显示方式,但实际操作中发现,嵌套后如果不...

cywaker
2014/06/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Mac java多版本控制

vim ~/.bash_profile ORACLE_JAVA_6_HOME="/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home"ORACLE_JAVA_7_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents......

晨猫
9分钟前
0
0
[转载]Qlist的用法

QList是一种表示链表的模板类。 QList是Qt的一种泛型容器类。它以链表方式存储一组值,并能对这组数据进行快速索引,还提供了快速插入和删除等操作。 QList、QLinkedList和QVector提供的操作...

shzwork
9分钟前
0
0
谷歌的JavaScript编写风格中 13点值得我们注意的!

  对于那些还不熟悉JavaScript的编写风格的人,谷歌提供了编写JavaScript的编写风格指南,谷歌风格指南 其中列出了编写干净、可理解代码的最佳风格实践。   对于编写有效的JavaScript来说...

peakedness丶
23分钟前
1
0
Spring Boot2中配置HTTPS

1.生成证书 使用jdk,jre中的keytool.exe生成自签名的证书,需要配置JAVA_HOME和path环境变量,即jdk的环境变量。命令如下: keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA ...

voole
31分钟前
2
0
Spring Cloud Alibaba 新版本发布:众多期待内容整合打包加入!

在Nacos 1.0.0 Release之后,Spring Cloud Alibaba也终于发布了最新的版本。该版本距离上一次发布,过去了整整4个月!下面就随我一起看看,这个大家期待已久的版本都有哪些内容值得我们关注。...

程序猿DD
33分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部