【发布时间】:2017-11-07 20:36:34
【问题描述】:
我的活动中有这个方法 (CreatePhotostoryActivity):
@Override
public void showEditField(Moment oldMoment, final int index){
listRecycler.setVisibility(View.GONE);
editCaption.setVisibility(View.VISIBLE);
saveCancelNavbar.setVisibility(View.VISIBLE);
momentView.setVisibility(View.GONE);
photoStoryNavbar.setVisibility(View.GONE);
header.setVisibility(View.GONE);
Picasso.with(getApplicationContext()).load(oldMoment.photoUri).into(displayPhoto);
imageCaption.setText("");
imageCaption.setText(oldMoment.caption);
backIcon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
closeEditMoment();
}
});
saveText.setText("Save Moment");
saveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
updateMoment(imageCaption.getText().toString(), index);
Intent i = new Intent(CreatePhotostoryActivity.this, RVAdapter.class);
i.putExtra("isSaved", true);
startActivity(i);
}
});
cancelButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
closeEditMoment();
Intent i = new Intent(CreatePhotostoryActivity.this, RVAdapter.class);
i.putExtra("isSaved", false);
startActivity(i);
}
});
}
在我的RecyclerView 适配器中,showEditField 是使用接口调用的,它确实有效,只是我无法检测到是否单击了saveButton 或cancelButton。这就是在我的RecyclerView 适配器(RVAdapter)的onBindViewHolder 方法中调用它的方式:
((RecyclerView.ViewHolder) momentViewHolder).itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mAdapterCallback.showEditField(moments.get(position), position);
Intent intent = ((CreatePhotostoryActivity) mContext).getIntent();
Boolean isSaved = intent.getExtras().getBoolean("isSaved");
if (isSaved) {
holder.momentCaption.setText(moments.get(position).caption);
holder.momentPlaceholder.setVisibility(View.GONE);
holder.momentCaption.setVisibility(View.VISIBLE);
} else {
holder.momentPlaceholder.setVisibility(View.VISIBLE);
holder.momentCaption.setVisibility(View.GONE);
}
notifyDataSetChanged();
});
请注意我尝试使用意图来找出单击了哪个按钮。它不起作用。即使点击了saveButton,momentCaption 仍然消失,momentPlaceHolder 仍然可见。该应用程序随后也会崩溃。
编辑:我认为在设置momentCaption 和momentPlaceholder 的值之前调用此mAdapterCallback.showEditField(moments.get(position), position); 是有问题的,因为showEditField 在从适配器检索意图之前调用其他方法(例如closeEditMoment()。
【问题讨论】:
标签: android android-intent android-recyclerview