在首选项片段类中,getListView 返回一个回收器视图。 如何在回收器视图中为此列表项创建上下文菜单? 列表项是使用代码层次结构创建的首选项
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) {
.....
}
}
我通过在首选项片段类内的视图持有人上注册上下文菜单侦听器来解决此问题。
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
}