从 activity 隐藏 recyclerview 中的按钮,菜单不起作用

Hide button in recyclerview from activity with menu not working

试图通过我的 activity 菜单选项将按钮设置为在 recyclerview 中不可见,但它没有做任何事情我在 recyclerview 适配器和 bindviewholder 上创建了一个方法,我设置了 if 语句来更改可见性。 activity 我设置了您调用方法的方式。我错过了什么?谢谢

public class PostRecyclerAdapter extendsRecyclerView.Adapter<PostRecyclerAdapter.ViewHolder> {
private boolean activate = false;

public PostRecyclerAdapter(Context context, List<Post> blogList) {
    this.context = context;
    this.postList = blogList;
}

public PostRecyclerAdapter() {

}

@Override
public void onBindViewHolder(ViewHolder holder, int position) {

    final int itemPos = position;
    final Post post = postList.get(position);
    holder.title.setText(post.getTitle());
    holder.desc.setText(post.getDesc());
    holder.category.setText(post.getTag());

    holder.edit.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            editClassifiedAd(post.getPostId());
        }
    });

    holder.delete.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            deleteClassifiedAd(post.getPostId(), itemPos);
        }
    });

    if (activate) {
        holder.edit.setVisibility(View.VISIBLE);
        holder.delete.setVisibility(View.VISIBLE);
    } else {
        holder.edit.setVisibility(View.INVISIBLE);
        holder.delete.setVisibility(View.INVISIBLE);
    }
}

public void activateButtons(boolean activate) {
    this.activate = activate;
    notifyDataSetChanged(); 
}


PostListActivity.java
public class PostListActivity extends AppCompatActivity{

PostRecyclerAdapter mAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_post_list);
    postListFrgmt();
    mAdapter = new PostRecyclerAdapter();

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main_menu, menu);
    return super.onCreateOptionsMenu(menu);
}


@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.edit:
            if(item.isChecked()){
                // If item already checked then unchecked it
                item.setChecked(false);
                mAdapter.activateButtons(true);
            }else{
                // If item is unchecked then checked it
                item.setChecked(true);

                mAdapter.activateButtons(false);
            }

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

    return super.onOptionsItemSelected(item);
}

在 PostListActivity 中,您实际上并未将适配器设置为 RecyclerView。 您需要添加您的 recyclerview,给它一个 LayoutManager(线性或其他方式),然后将适配器传递给它。例如

//assuming you've declared the RecyclerView as recyclerView1
recylcerView1.setLayoutManager(new LinearLayoutManager(PostListActivity.this));
recylcerView1.setAdapter(mAdapter)