我爲高級搜索創建了一個全屏對話框片段。它有一個回收者視圖和一個微調器,爲回收者視圖添加元素。每個項目在右上角都有一個EditText,一個微調框和一個關閉按鈕(抱歉,我必須爲關閉按鈕選擇另一個圖標)。根據我選擇的選項(某些選項是日期),在微調器「添加過濾器」上,該項目的編輯文本可能會附帶或不附帶DatepickerDialog。 我的問題是。 在方法「addEditext」我設置「viewHolder.texto.setFocusable(false);」所以它唯一可能的在該Edittext中設置日期,但在「onBindviewHolder」我設置「viewHolder.texto.setFocusable(true);」它不工作,當我添加一個日期EditText過濾器,我刪除它,後來添加另一種EdittText Ediitext不可聚焦。檢測項目時recyclerview中的Edittext不可聚焦
@Override
public void onBindViewHolder(Boarding_searchViewHolder viewHolder, final int position) {
viewHolder.texto.setText(lista_filtro.get(position).getTexto());
viewHolder.texto.setOnClickListener(null);
viewHolder.texto.setFocusable(true);
viewHolder.texto.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start,
int before, int count) {
//setting data to array, when changed
// this is a semplified example in the actual app i save the text
// in a .txt in the external storage
lista_filtro.get(position).setTexto(s.toString());
}
@Override
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
addFilterText(viewHolder, position);
addSpinner(viewHolder, position);
addCloseButton(viewHolder, position);
// EditText aux= new EditText(viewHolder.itemView.getContext());
// lista_textos.add(aux);
//viewHolder.texto=lista_textos.get(position);
addEditText(viewHolder, position);
}
private void addEditText(final Boarding_searchViewHolder viewHolder, int position) {
Date fecha= new Date();
switch(lista_filtro.get(position).getFilter())
{
case ETD:
case ETA:
case AUTHORIZED_DATE:
viewHolder.texto.setFocusable(false);
final Calendar myCalendar = Calendar.getInstance();
final Cambiafecha cambiarfecha= new Cambiafecha(fecha, viewHolder.texto);
viewHolder.texto.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
new DatePickerDialog(viewHolder.itemView.getContext(), cambiarfecha, myCalendar
.get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
myCalendar.get(Calendar.DAY_OF_MONTH)).show();
}
});
break;
}
}
class Cambiafecha implements DatePickerDialog.OnDateSetListener {
Date fecha;
EditText texto;
public Cambiafecha(Date fecha, EditText texto)
{
super();
this.texto=texto;
this.fecha=fecha;
}
@Override
public void onDateSet(DatePicker datePicker, int year, int month, int day) {
fecha.setMonth(month);
fecha.setDate(day);
fecha.setYear(year);
updateLabel();
}
private void updateLabel() {
String myFormat = "dd/MM/yy"; //In which you need put here
SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US);
texto.setText(sdf.format(fecha));
}
};
@ Tico1993我已經修改了答案,以便提供一些見解如何實現它。切換到ListView需要相同的方法。 – MeliX
我設置爲edittext的OnClickListeners事件會改變嗎?我遇到的另一個問題是,當我刪除一個項目時,只需刪除該項目的位置的項目也需要我在已刪除項目上設置的事件 – Tico1993
@ Tico1993是的,您是對的。你也應該在你的'onBindViewHolder'中調用'viewHolder.texto.setOnClickListener(null);'。 – MeliX