我試圖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方法? –
setLayout(名稱可能不合適)從適配器的onbind函數中調用。我也uset getItemType –