【问题标题】:How to create context menu for recyclerView in PreferenceFragmentCompat class?如何在 PreferenceFragmentCompat 类中为 recyclerView 创建上下文菜单?
【发布时间】:2019-08-23 11:54:45
【问题描述】:

在偏好片段类中,getListView 返回一个recyclerView。 如何在回收站视图中为此列表项创建上下文菜单? 列表项是使用代码层次结构创建的首选项

public static class ProfileListScreenFragment extends 
     PreferenceFragmentCompat  {

   @Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) 
{

        setPreferenceScreen(createPreferenceHierarchy());
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle 
  savedInstance{
  super.onViewCreated(view, savedInstanceState);
  registerForContextMenu(getListView()); // get list view returns a 
                                            recycler view

 }
@Override
 public void onCreateContextMenu(@NonNull ContextMenu menu, @NonNull View v, 
  @Nullable ContextMenu.ContextMenuInfo menuInfo) {
           .....
    }
  }

【问题讨论】:

  • 我认为你必须在fragment中创建菜单并通过接口在特定操作的适配器中调用它。

标签: android android-fragments contextmenu androidx


【解决方案1】:

我通过在偏好片段类中的视图持有者上注册上下文菜单侦听器解决了这个问题。

public class TestFragmentClass extends PreferenceFragmentCompat{     

    @Override
    public void onBindViewHolder(@NonNull final PreferenceViewHolder holder, final 
    int position) {
                super.onBindViewHolder(holder, position);

                final ViewGroup itemView  = (ViewGroup) holder.itemView;
                itemView.setOnCreateContextMenuListener(new View.OnCreateContextMenuListener() {
                    @Override
                    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo){
                        RecyclerView.ViewHolder vh  = getListView().getChildViewHolder(v);
                        int position = vh.getAdapterPosition();
                       .....
                 }
    @Override
    public boolean onContextItemSelected(MenuItem item){
      // override onContextItemSelected here

    }

【讨论】:

  • 我无法覆盖onBindViewHolder。不是PreferenceFragmentCompat的方法,而是androidx.preference.PreferenceGroupAdapter内部的方法
猜你喜欢
  • 2014-12-15
  • 2020-01-13
  • 1970-01-01
  • 2014-07-27
  • 2022-01-03
  • 2011-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多