首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android EditText字段不允许用户在ListView中输入

是因为ListView默认会将焦点交给其子项,而EditText是可以接收用户输入的控件。为了禁止用户在ListView中输入,可以通过以下两种方式实现:

  1. 在ListView的适配器中,为每个EditText设置一个TextWatcher监听器,当用户输入时,立即清空EditText的内容。这样用户输入的内容就会被清空,达到禁止输入的效果。
代码语言:java
复制
public class MyAdapter extends BaseAdapter {
    private List<String> data;
    private LayoutInflater inflater;

    public MyAdapter(Context context, List<String> data) {
        this.data = data;
        inflater = LayoutInflater.from(context);
    }

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

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

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

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        if (convertView == null) {
            convertView = inflater.inflate(R.layout.list_item, parent, false);
            holder = new ViewHolder();
            holder.editText = convertView.findViewById(R.id.editText);
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }

        holder.editText.setText(data.get(position));
        holder.editText.addTextChangedListener(new TextWatcher() {
            @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) {
                // 清空EditText的内容
                data.set(position, "");
            }
        });

        return convertView;
    }

    private static class ViewHolder {
        EditText editText;
    }
}
  1. 在ListView的适配器中,为每个EditText设置一个OnTouchListener触摸监听器,当用户触摸EditText时,返回true,表示已经处理了触摸事件,不再将焦点交给EditText,从而禁止用户输入。
代码语言:java
复制
public class MyAdapter extends BaseAdapter {
    private List<String> data;
    private LayoutInflater inflater;

    public MyAdapter(Context context, List<String> data) {
        this.data = data;
        inflater = LayoutInflater.from(context);
    }

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

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

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

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        if (convertView == null) {
            convertView = inflater.inflate(R.layout.list_item, parent, false);
            holder = new ViewHolder();
            holder.editText = convertView.findViewById(R.id.editText);
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }

        holder.editText.setText(data.get(position));
        holder.editText.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                // 返回true表示已经处理了触摸事件,不再将焦点交给EditText
                return true;
            }
        });

        return convertView;
    }

    private static class ViewHolder {
        EditText editText;
    }
}

以上两种方式都可以实现在ListView中禁止用户输入EditText的效果。在实际应用中,可以根据具体需求选择合适的方式。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

AndroidEditText禁止输入表情的实例代码

最近在做的项目中用户编辑资料的时候不希望用户输入表情,如果用户输入表情的话上传给后台要报错,所以需要我们前端做一个判断。下面就来说一下怎么EditText屏蔽表情吧。...网上有很多这样的列子但是一不小心就会掉进坑里面,比如继承EditText,重写addTextChangedListener()方法。...这里想到了通过过滤器来拦截用户输入的字符,可以避免截取字符串角标越界的问题。...} }; 然后给editText设置filter,这里给editText设置了两个filter第一个是屏蔽表情,第二个是设置用户输入多少字数的限制 //给editText设置filter edit_name.setFilters...所以最后我们只能选择让用户填写英文,汉字,和数字了。

2.1K41

Android如何禁止向EditText控件输入内容详解

前言 Android开发中经常会遇到EditText控件,而在App开发过程、遇到了这样一个问题、那就是Android EditText控件如何禁止往里面输入内容?...最开始找到修改版解决方法、但是当想输入的时候就有问题了、可以参考一下、但不建议这样写 EditText editText = (EditText) findViewById(R.id.editText1...再者、如果真要禁止输入文本、布局文件添加 android:focusable="false" 或者代码中使用、不就Ok了?...editText.setFocusable(false) 项目需求是这样的、EditText后面跟一个CheckBox、勾选CheckBox可以输入、否则不可以输入、另外也有这种需求、比如已经被setText...android:focusable="false" 即使你代码设置此控件属性:editText.setFocusable(true);也不能对它进行编辑、即setFocusable方案不可行、经过摸索得出可行方案利用

1.3K31

Android开源库:手把手教你实现一个简单好用的搜索框(含历史搜索记录)

前言 Android开发,类似下图的搜索功能非常常见 ? 今天,我将手把手教大家实现一款 封装了 历史搜索记录功能 & 样式 的Android 自定义搜索框 开源库,希望你们会喜欢。 ?...需求场景 开始coding前, 理解好用户的需求场景 有助于我们更好地设计 & 实现功能 需求场景如下 ? ---- 3. 业务流程图 根据场景,梳理出来的功能业务流程图如下: ? ---- 4....功能详细设计 下面将给出详细的功能逻辑 6.1 关键字搜索 描述:根据用户输入的搜索字段进行结果搜索 原型图 注:关键字搜索功能是因人而异的,所以本源码仅留出接口供开发者实现,不作具体实现 ?...)监听 * 即当用户点击搜索历史里的字段后,会直接将结果当作搜索字段进行搜索 */ listView.setOnItemClickListener(new AdapterView.OnItemClickListener...} else { tv_clear.setVisibility(INVISIBLE); }; } 6.4 保存历史搜索记录 描述:将用户输入的搜索字段保存到数据库

2.7K10

Android 应用开发】Android 数据存储 之 SQLite数据库详解

, 数据库表不允许插入一行空的数据, 插入数据至少有一列不为null才能插入, 如果后面的values是null, 并且不知道列的名称, 那么插入操作会失败, 为了避免这种情况, 就出现了本参数, 为了防止..., 没有严格的某个字段 必须存放某个类型的数据这样的限制, 因此创建数据库 和 插入数据的时候不用关心这个列的数据类型; -- eg: SQLite可以将字符串数据放到整型字段, 但是主键id,...context : 上下文对象; -- 参数② resource : ListView条目的布局; -- 参数③ cursor : 从数据库表查询出来的记录; -- 参数④ string[]: 数据库中表的字段名称...SQLiteDatabase db; //数据库对象 private ListView listView; //列表 private EditText et_tittle; //输入的新闻标题 private...et_tittle; //输入新闻标题 private EditText et_content; //输入新闻内容 private ListView listView; //

2.4K10

基于Android Studio实现 购物商城APP (简单易上手)

sousuo方法,设置了搜索按钮的点击事件,根据用户输入的关键词搜索相关商品并展示。initListView方法,初始化ListView,并加载商品数据。...同时,根据商品数据的shoptype字段,动态创建TabLayout的Tab,并设置TabLayout的选择事件监听器,以根据选择的商品类别展示相应的商品列表。...ListView的点击事件监听器,根据点击的商品位置,将对应的Shop对象传递给DetailsActivity,并启动该活动。...onCreateView方法,它通过调用loadDataToListView方法来加载数据并将其设置到ListView上。...点击商品列表进入详情页:用户可以点击商品列表的商品,查看其详细信。 4. 购物车功能: 商品数量的增加减少:允许用户购物车增加或减少商品的数量。

11210

Android小程序实现音乐播放列表

android.widget.EditText; public class AddActivity extends Activity { private EditText et1, et2; private...R.id.ButtonAdd); b1.setOnClickListener(new OnClickListener() { public void onClick(View v) { // 获取用户输入的文本信息...Intent(AddActivity.this, QueryActivity.class); startActivity(intent); } }); } } 当单击“添加”按钮时,先将用户输入的音乐名和歌手信息封装到...ContentValues对象,再调用DBHelper的insert()方法将记录插入到数据库,然后跳转到QueryActivity来显示音乐列表。...音乐列表单击一条记录,弹出警告对话框删除一条记录: ? 更多关于播放器的内容请点击《java播放器功能》进行学习。 以上就是本文的全部内容,希望对大家的学习有所帮助。

1.2K41

androidListView的Adapter使用

在做一个小练习的时候,又遇到了Adapter,才发现以前没有对它进行过记录 现在介绍一下: 其实Adapter就是数据和视图之间的桥梁,数据adapter做处理,然后显示到ListView上面 Adapter...这里就以ArrayAdapter为例来介绍 我自己写的一个例子: 有两个类,一个是主界面Activity,用来处理输入和显示,效果图最下面,可以翻到最后看一下,布局如下: 的形式存在的,当然我们设置的时候这个数组里面还没有数据...其实就是两个EditText和一个RadioGroup,用来采集输入的数据,然后存储到下面这个类里面: package apt.tutorial; public class Restaurant {...*/ listView = (ListView) findViewById(R.id.array_list); /* 我们要在listView上面显示的数据,放到一个数组

67510

Android编程之ListViewEditText发布帖子隐藏软键盘功能详解

本文实例讲述了Android编程之ListViewEditText发布帖子隐藏软键盘功能。...分享给大家供大家参考,具体如下: Android开发,手动调用软件盘的隐藏和显示有时候也是非常常见的需求。 EditText控件实现了点击打开软键盘输入功能,but why ?...为什么EditText可以点击弹出keyboard,而TextView却不可以,EditText继承TextView做了哪些修改呢?...开发有个布局是最外层是FrameLayout,包裹了ListView,bottom底部是个edit输入框,当点输入框打开keyboard时候,需要下滑listView隐藏keyboard,但上滑继续滑动...其实Edit是个很高的Edit,这种方法,会导致跟listview一样,edit滑动时同时收起了keyboard导致重影,因为是adjustResize和布局的原因。

1.1K20

2014-10-31Android学习------SQLite数据库操作(四)-----数据库模块(二)增删改查实例展示

; import android.widget.EditText; import android.widget.ListView; import android.widget.SimpleCursorAdapter...from:表的数据列名的列表绑定到用户界面。意思就是把游标那个列的数据绑定到界面中去 to:这些都应该是TextViews。...意思就是将游标的数据显示布局文件哪些控件上,这个参数是控件的id号 flags:用于确定适配器的行为 其实这里我们也可以用前面讲到的SimpleAdapter去实现它,那就是参数不是游标数据...是表示键值 这里写的肯定就是布局文件的id的名称了,因为它必须跟后面的String[]相匹配的 然后再将map放入list里面不就行了,就成为data了么 参看前面的文章:http://blog.csdn.net...它说不要使用这个方法,你只需要申请一个新的游标,当这个新的游标值返回来的时候(当你定义的新的游标有值的时候),你就能够异步更新视图列表做到这一点(让数据库中最新的数据显示列表) 下面我们要思考为什么重复查询很危险

58840

Android开发之那些好用的数据结构与API(二)

Android开发之那些好用的数据结构与API 一文中提到了Android中一些好用的数据结构和API,这次继续补充几个我项目中用到的好用的但是不是人人都知道的东东 ~~ 1、android...:digits Android开发,经常要设置EditText为密码显示,但是通常要求密码只能是 **字母和数字 . _ **的组合,此时就可以用该属性进行过滤 <EditText...digits.gif 2、setKeyListener() 接着上面说,还有一种方法也可以限定EditText输入字符,那就是给EditText设置KeyListener et.setKeyListener...setKeyListener.gif 3、ListView 的 setEmptyView 该方法可以为没有数据的ListView 设置一个提示View,常常用在ListView没有加载到数据或加载数据失败时提示...setEmptyView.png 注意 经过本人测试,如果ListView包含在某些下拉刷新框架,这样做是没有效果的,应该是冲突了。

66460
领券