Ich versuche zu notifydatasetchanged, wenn ich fertig bin, einen Bearbeitungstext in einer Recyclerview zu bearbeiten (warum? Weil einige andere Objekte in Recyclerview nur zugänglich sind, wenn zum Beispiel die Text bearbeiten ist gleich "test").Android - notifyDataSetChanged, wenn ich einen editText bearbeitet habe
So habe ich einen Adapter mit vielen Ansicht Halter, hier ist der für Text bearbeiten:
public EditTextViewHolder(View itemView, final Activity activity, final Context context, final String param) {
super(itemView);
this.activity = activity;
this.context = context;
this.param = param;
name = (TextView) itemView.findViewById(R.id.tEditTextName);
desc = (TextView) itemView.findViewById(R.id.tEditTextDescription);
details = (TextView) itemView.findViewById(R.id.tEditTextMoreDetails);
editText = (EditText) itemView.findViewById(R.id.eEditTextValue);
image = (ImageView) itemView.findViewById(R.id.iEditTextImage);
lMain = (LinearLayout) itemView.findViewById(R.id.layoutTaskEditText);
lOptional = (LinearLayout) itemView.findViewById(R.id.layoutEditTextOptional);
lRequired = (LinearLayout) itemView.findViewById(R.id.isRequiredTask);
}
public void setLayout(final Content content) {
name.setText(content.getTitle());
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
content.getAnswers().get(0).setValue(s.toString().trim());
}
});
editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus)
TaskActivity.sAdapter.notifyDataSetChanged();
}
});
}
Aber ich bin immer die Fehlermeldung „Kann diese Methode nicht aufrufen, während RecyclerView ein Layout oder Scrollen wird die Berechnung“ auch wenn ich versuche, im handler oder im ui thread zu melden, funktioniert es nicht.
Es funktioniert mit allen meinen anderen Sichthalter. Weißt du, was mache ich falsch mit Text bearbeiten?
Hey, ich diese Lösung noch einmal versucht haben, um sicher zu sein, aber es ist auf jeden Fall nicht funktioniert, ich habe immer noch „diese Methode nicht während RecyclerView anrufen können berechnet ein Layout oder scrollt ". Ich habe viele Ansichtshalter in verschiedenen Dateien, deshalb bekomme ich meinen Adapter durch die Aktivität, wo der Adapter statisch ist. –
Kannst du mehr von deinem Code posten? Wo rufst du auch Methode setLayout? –
setLayout (der Name möglicherweise nicht angemessen) wird von Onbind-Funktion des Adapters aufgerufen. Ich benutze auch getItemType –