Кнопка «Скрыть» в обзоре утилит от действий с не работающим меню - PullRequest
0 голосов
/ 10 января 2019

Пытаясь установить кнопки, невидимые в программе RecycleView, из опций моего меню действий, но ничего не происходит. Я создал метод в адаптере программы Riderler и в держателе bindview я задаю оператор 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);
}

1 Ответ

0 голосов
/ 11 января 2019

В PostListActivity вы фактически не устанавливали адаптер в RecyclerView. Вы должны добавить в свой просмотрщик, дать ему LayoutManager (линейный или другой), а затем передать его адаптеру. Э.Г.

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