我使用Recyclerview
来显示EditText
的列表。
我的要求是每当我点击EditText
时,它应该打开一个数字小键盘,该项目应该在选中时突出显示。
我的代码执行以下操作:
我的片段是点击项目的监听器。
每当点击项目时,它都会调用片段中的侦听器方法,该方法会更新所选项目并刷新适配器,以便突出显示所选项目。
片段中的侦听器方法:
@Override
public void itemClicked(int position) {
for (MyClass myObject : myObjectList) {
myObject.isSelected = false;
}
myObjectList[position].isSelected = true;
myRecyclerViewAdapter.notifyDataSetChanged();
}
在我的适配器中:
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
if(myObjectList[position].isSelected){
// highlight this item
}else{
// do not highlight this item
}
}
这完全没问题。但是,只要点击了recyclerview项目中的EditText
,我就会这样做。
问题是:
首先,我应该使用什么样的监听器进行EditText点击?为什么?
我使用 OnFocusChangedListener ,我在片段中调用了我的侦听器方法,选择了正确的位置,但是当它刷新适配器时,它会解冻我单击的EditText(defocuses意味着它从点击的edittext中移除光标)还有一件事它将数字键盘更改为普通键盘。
myEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
if (clickListener != null) {
clickListener.itemClicked(getLayoutPosition());
}
}
}
});
根据我的代码,这个问题很明显,但我无法解决问题。
非常感谢任何帮助。