试图从我的活动菜单选项中将按钮设置为在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)