私はrecyclerviewの編集テキストの編集を終了したときにnotifydatasetchangedしようとしています(なぜですか?recyclerviewの他のオブジェクトはアクセス可能です。テキストの編集は「テスト」と同じです)。Android - notifyDataSetChanged editTextの編集が終了しました
だから私はここに、多くのビューホルダーにアダプターを持っているが、編集テキストのいずれかになります。
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();
}
});
}
しかし、私はエラーが「RecyclerViewは、レイアウトを計算するか、スクロールしている間に、このメソッドを呼び出すことはできません」取得しています私がハンドラまたはUIスレッドで通知しようとしても、それは動作していません。
これは他のすべてのビュー所有者と連携します。編集テキストで何が間違っているのか分かりますか?
ねえ、私は確かに再びこのソリューションを試してみたが、それは間違いなく私はまだ「RecyclerViewながら、このメソッドを呼び出すことはできません持って働いていませんレイアウトやスクロールを計算しています "。私はさまざまなファイルに多くのビュー所有者を持っているので、私はアダプタがパブリックな静的なアクティビティで自分のアダプタを取得するのです。 –
あなたのコードをもっと投稿できますか?また、メソッドsetLayoutをどこで呼び出しますか? –
アダプタのonbind関数からsetLayout(名前が適切でない可能性があります)が呼び出されます。私はまたgetetemTypeをuset getetemType –