首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >由ListAdapter组成的自定义EditText丢失焦点两次调用

由ListAdapter组成的自定义EditText丢失焦点两次调用
EN

Stack Overflow用户
提问于 2014-11-24 08:24:12
回答 3查看 2.2K关注 0票数 5

我正在制作一个电子商务应用程序,它的购物车列表有一个自定义的ListView,由EditText组成。EditText表示项目的数量。我使用OnFocusChangeListener来检测客户何时完成了更改项目的数量,然后在服务器上更新购物车。一切都很好,只是onFocusChange被叫了两次,也就是我得到了两次false

代码语言:javascript
运行
复制
viewHolder.etProductQuantity.setOnFocusChangeListener( new View.OnFocusChangeListener() {

    @Override
    public void onFocusChange(View view, boolean hasFocus) {

        if(!hasFocus){

            // Updating the ProductList class's object to set the new quantity
            // Updating product quantity on server
            Log.d("Product Quantity", viewHolder.etProductQuantity.getText().toString() + b);
        }
    }
});

因此,代码被执行了两次,这就产生了问题。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-11-24 08:37:23

在清单中的活动中添加以下行修复了问题:

代码语言:javascript
运行
复制
 android:windowSoftInputMode="adjustPan"

但不知道为什么。

票数 2
EN

Stack Overflow用户

发布于 2014-11-24 08:37:50

你可以这样使用:

代码语言:javascript
运行
复制
edt_sys_log_search.setOnEditorActionListener(new OnEditorActionListener() {        
            @Override
            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
                if(actionId==EditorInfo.IME_ACTION_DONE){
                    //do calling WS                 
                }
                return false;
            }
        });

并将EditText属性设置为:

代码语言:javascript
运行
复制
android:imeOptions="actionDone"
singleLine="true"

当用户按下SoftKeyboard完成时,它将调用WS

票数 1
EN

Stack Overflow用户

发布于 2014-11-24 08:41:47

尝试维护一个标志,其中检查丢失了,焦点代码执行了一次,然后再也不执行了:

代码语言:javascript
运行
复制
viewHolder.etProductQuantity.setTag(1);
viewHolder.etProductQuantity.setOnFocusChangeListener( new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View view, boolean hasFocus) {
                if(!hasFocus && ((Integer)view.getTag())==1){
                    // Updating the ProductList class's object to set the new quantity
                    // Updating product quantity on server
                    Log.d("Product Quantity",                    
                    viewHolder.etProductQuantity.getText().toString() + b);
                    view.setTag(0);
                }else{
                    view.setTag(1);
                }
            }
        });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27100534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档