Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在listview中设置可聚焦的成员元素?_Android_Listview_Focusable - Fatal编程技术网

Android 如何在listview中设置可聚焦的成员元素?

Android 如何在listview中设置可聚焦的成员元素?,android,listview,focusable,Android,Listview,Focusable,我有一个自定义的listview,里面有3个EditText和一个按钮 顺便说一句,我不想编辑文本,所以我设置了 android:focusable="true" 但在某个时刻,我希望当点击按钮时,它们应该是可编辑的 因此,在getView内部(我使用的是自定义适配器),我将onClick侦听器设置为: @Override public View getView(final int position, View convertView, ViewGroup parent) {

我有一个自定义的listview,里面有3个EditText和一个按钮

顺便说一句,我不想编辑文本,所以我设置了

android:focusable="true"
但在某个时刻,我希望当点击按钮时,它们应该是可编辑的

因此,在getView内部(我使用的是自定义适配器),我将onClick侦听器设置为:

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


        Log.d("Reached: ","Getview");





        ViewHolder viewHolder = null;

        if (convertView == null) {
            LayoutInflater inflator = LayoutInflater.from(getContext());
            convertView = inflator.inflate(R.layout.list_view, null);
            viewHolder = new ViewHolder();
            viewHolder.product_nameET= (EditText) convertView.findViewById(R.id.product_nameET);
            viewHolder.priceET= (EditText) convertView.findViewById(R.id.priceET);
            viewHolder.quantity_availableET= (EditText) convertView.findViewById(R.id.quantity_availableET);
            viewHolder.edit_button= (Button) convertView.findViewById(R.id.edit_rowButton);
            //viewHolder.product_nameET.setFocusable(true);
             final ViewHolder vh=viewHolder;
            viewHolder.edit_button.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {

                    //lv.getChildAt(position).setFocusable(true);
                    vh.product_nameET.setFocusable(true);//////This line here has no effect


                }
            });


            convertView.setTag(viewHolder);
            convertView.setTag(R.id.product_nameET, viewHolder.product_nameET);
            convertView.setTag(R.id.priceET, viewHolder.priceET);
            convertView.setTag(R.id.quantity_availableET, viewHolder.quantity_availableET);
            convertView.setTag(R.id.edit_rowButton, viewHolder.edit_button);


        }
        else {
            viewHolder = (ViewHolder) convertView.getTag();
        }



        viewHolder.product_nameET.setText(product_namesList.get(position));
        viewHolder.priceET.setText(priceList.get(position));
        viewHolder.quantity_availableET.setText(quantity_availableList.get(position));






        return convertView;



    }

但这没有任何效果。请帮助我了解android。

通过
EditText.getKeyListener()
获取
EditText的
KeyListener
值,并存储在
KeyListener
类型变量中,该变量将包含可编辑属性值:

KeyListener variable;
variable = editText.getKeyListener(); 
EditText
的可编辑属性设置为
false

edittext.setKeyListener(null);
editText.setKeyListener(variable);  
现在将
EditText
的可编辑属性设置为
true
,如下所示:

edittext.setKeyListener(null);
editText.setKeyListener(variable);  

注意:在XML中,
EditText
的默认可编辑属性应为
true

通过
EditText.getKeyListener()
获取
EditText
KeyListener
值,并存储在
KeyListener
类型变量中,该变量将包含可编辑属性值:

KeyListener variable;
variable = editText.getKeyListener(); 
EditText
的可编辑属性设置为
false

edittext.setKeyListener(null);
editText.setKeyListener(variable);  
现在将
EditText
的可编辑属性设置为
true
,如下所示:

edittext.setKeyListener(null);
editText.setKeyListener(variable);  

注意:在XML中,
EditText
的默认可编辑属性应该是
true

尝试此属性,您需要启用按钮

   viewHolder.edit_button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {

            //lv.getChildAt(position).setFocusable(true);
            viewHolder.product_nameET.setEnabled(true);

        }
    });

试试这个,你需要启用这个按钮

   viewHolder.edit_button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {

            //lv.getChildAt(position).setFocusable(true);
            viewHolder.product_nameET.setEnabled(true);

        }
    });

根据条件,尝试使用true(enable)/false(disable)值设置以下两个属性:

为输入启用编辑文本:

vh.product_nameET.setFocusable(true);
vh.product_nameET.setFocusableInTouchMode(true);
vh.product_nameET.setFocusable(false);
vh.product_nameET.setFocusableInTouchMode(false);
用于禁用输入的编辑文本:

vh.product_nameET.setFocusable(true);
vh.product_nameET.setFocusableInTouchMode(true);
vh.product_nameET.setFocusable(false);
vh.product_nameET.setFocusableInTouchMode(false);

根据条件,尝试使用true(enable)/false(disable)值设置以下两个属性:

为输入启用编辑文本:

vh.product_nameET.setFocusable(true);
vh.product_nameET.setFocusableInTouchMode(true);
vh.product_nameET.setFocusable(false);
vh.product_nameET.setFocusableInTouchMode(false);
用于禁用输入的编辑文本:

vh.product_nameET.setFocusable(true);
vh.product_nameET.setFocusableInTouchMode(true);
vh.product_nameET.setFocusable(false);
vh.product_nameET.setFocusableInTouchMode(false);

您是否尝试同时使用setFocusable和setFocusableInTouchMode?@Hareshchelana有效我有post答案请检查并接受,如果可以解决您的问题,请向上投票,这样对其他人也有帮助。您是否尝试同时使用setFocusable和setFocusableInTouchMode?@Hareshchelana有效我有post答案请检查并接受并更新投票,如果它能解决您的问题,那么它将帮助其他人。这给了我一个空指针异常,就像listview中没有项目一样,视图为空。是的,它明显没有edittext它无法获取引用您必须检查空异常这给了我一个空指针异常,因为当列表视图中没有项目时,视图为空。是的,它明显没有edittext它无法获取引用您必须检查空异常