我有一个异构的RecyclerView,它有一个header。里面有个按钮。我想要做的是改变按钮的属性(背景,文本)从我的Fragment。基本上,当API调用完成并有响应时,我需要以某种方式通知adapter更改按钮的背景和文本。但是,我似乎不知道如何获得按钮的引用,或者将更改按钮属性的代码放在哪里。
Recyclerview
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(mContext);
switch (viewType) {
case HEADER_TYPE:
View viewHeader = inflater.inflate(R.layout.item_profile_header, parent, false);
StaggeredGridLayoutManager.LayoutParams lp1 = (StaggeredGridLayoutManager.LayoutParams) viewHeader.getLayoutParams();
lp1.setFullSpan(true);
viewHeader.setLayoutParams(lp1);
return new ProfileAdapter.HeaderHolder(viewHeader);
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
switch (holder.getItemViewType()) {
case HEADER_TYPE:
onBind = true;
bindHeader((ProfileAdapter.HeaderHolder) holder, mHomeList.get(position));
onBind = false;
break;
private void bindHeader(final ProfileAdapter.HeaderHolder holder, Home home) {
holder.mItemProfileHeaderBinding.setHome(home);
holder.getItemProfileHeaderBinding().btnFollow.setOnClickListener(v -> {
if (mListener == null) {
return;
}
mListener.onClickFollow();
});
}Fragment
if (response.getResponseInfo().getStatus() != 0) {
Log.d(TAG, "Profile problem: " + response.getResponseInfo().getMessage());
} else {
//How to do some sort of callback here?
}发布于 2017-08-19 20:29:58
当您用数据填充标头时,为背景、大小和其他任何内容添加额外的字段,这些字段将根据情况需要设计标题,然后当您需要更改标题时,只需更改适配器列表并调用消息头上更改的通知项。
发布于 2017-08-20 02:28:52
您应该使用一个interface,然后使用您的片段implement它。我在适配器中使用以下内容
adapter.java
public interface OnClickRecyclerChild {
void myCallback(String s);
}我在调用构造函数时附加了我的OnClickRecyclerChild
adapter.java
public adapter(List<bindableAssignment> dataBaseItemList, OnClickRecyclerChild mCallback) {
this.mCallback = mCallback;
this.dataBaseItemList = dataBaseItemList;
}因此,当您调用您的创建适配器时,您可以为它提供如下所示的接口
mAdapter = new adapter(new ArrayList<bindableAssignment>(), new adapter.OnClickRecyclerChild() {
@Override
public void myCallback(String s) {
Log.d(TAG,s);
}
});当您在适配器中的任何地方调用mCallback.myCallback(String)时,mCallback.myCallback中的代码都会运行。
https://stackoverflow.com/questions/45775623
复制相似问题