Как настроить элементы-элементы, которые можно фокусировать в списке?
У меня есть собственный просмотр списка, который имеет 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);
}
});