首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >菜单项(状态栏的)和RecyclerView项之间的交互?

菜单项(状态栏的)和RecyclerView项之间的交互?
EN

Stack Overflow用户
提问于 2017-07-20 06:00:53
回答 1查看 441关注 0票数 1

我已经通过服务器的JSON响应填充了一个回收视图。

回收视图由图像和时间组成。还有一个按钮,其可见性设置为不可见。

这是每个项目的外观与按钮(也编辑)可见

现在,在菜单项(应用程序)中有一个编辑按钮,我想将所有回收视图按钮都设置为可见。

我怎样才能做到这一点?我试着去寻找同样的东西,但没有结果。

编辑:

这是显示RecyclerView的计划片段中的项目代码。

代码语言:javascript
复制
public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {

        case R.id.action_edit:
            //onClick of edit menu item

            return true;

        default:
            return super.onOptionsItemSelected(item);
    }
}

这是ViewHolder类在ScheduleAdapter中

代码语言:javascript
复制
    public class ViewHolder extends RecyclerView.ViewHolder {

    private NetworkImageView imageView_status;
    private TextView textView_status;
    private TextView textView_time;
    private Button button_edit;

    public ViewHolder(View itemView) {
        super(itemView);

        imageView_status = (NetworkImageView) itemView.findViewById(R.id.imageView);
        textView_status = (TextView) itemView.findViewById(R.id.textView_Status);
        textView_time = (TextView) itemView.findViewById(R.id.textView_Time);
        button_edit = (Button) itemView.findViewById(R.id.button);
    }
}

这是onBindViewHolder of the ScheduleAdapter

代码语言:javascript
复制
    public void onBindViewHolder(final CustomScheduleListAdapter.ViewHolder holder, int position) {

    if (imageLoader == null) {
        imageLoader = AppController.getInstance().getImageLoader();
    }

    holder.imageView_status.setImageUrl(punches.get(position).getImageURL(), imageLoader);
    holder.textView_status.setText(punches.get(position).getStatusName());
    holder.textView_time.setText(punches.get(position).getTimings());

    holder.button_edit.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(final View v) {
            //Actions performed after button click
        }
    });
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-20 06:18:17

您可以在适配器中有一个字段来跟踪是否应该将RecyclerView项设置为可见项。然后在onBindViewHolder中根据它设置视图的可见性。最后,在onOptionsItemSelected中,您可以在适配器中设置该字段的值,并在其上调用notifyItemRangeChanged

例如:

适配器:

代码语言:javascript
复制
public class ScheduleAdapter extends RecyclerView.Adapter<CustomScheduleListAdapter.ViewHolder> {

    private boolean showAllViews = false;

    public void setShowAllViews(boolean show) {
        showAllViews = show;
        notifyItemRangeChanged(0, getItemCount());
    }

    @Override
    public void onBindViewHolder(CustomScheduleListAdapter.ViewHolder holder, int position) {
        holder.viewyoucareabout.setVisibility(showAllViews? View.VISIBLE : View.GONE);
    }
}

附表片段:

代码语言:javascript
复制
public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {

        case R.id.action_edit:
            adapter.setShowAllViews(true);    
            return true;

        default:
            return super.onOptionsItemSelected(item);
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45206334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档