试图从我的活动菜单选项中将按钮设置为在recyclerview中不可见,但是它没有做任何事情,我已经在recyclerview适配器中创建了一个方法,并且在bindviewholder上我设置了if语句来更改可见性。本活动以您调用方法的方式进行设置。我想念什么?谢谢

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)

07-24 09:47
查看更多