Как настроить элементы-элементы, которые можно фокусировать в списке?

У меня есть собственный просмотр списка, который имеет 3 editTexts внутри него вместе с кнопкой.

По умолчанию я не хочу, чтобы editTexts был редактируемым, поэтому я установил

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.

3 ответа

Решение

Попробуйте установить ниже два свойства со значениями true(включить)/false(отключить) в зависимости от условий:

Для включения EditText Для ввода:

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

Отключить EditText для ввода:

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

Получить KeyListener ценность EditText от editText.getKeyListener() и хранить в KeyListener Переменная типа, которая будет содержать значение редактируемого свойства:

KeyListener variable;
variable = editText.getKeyListener(); 

Установите редактируемое свойство EditText в false как:

edittext.setKeyListener(null);

Теперь установите редактируемое свойство EditText в true как:

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);

        }
    });
Другие вопросы по тегам