Android dialog

Android的dialog 不能使用application中的context,但是要再非activity类中调用该怎么办,求解

非activity类也是从activity类创建使用的,构造函数加上context参数,new对象的时候穿参
public static静态方法调用也是传参context

如 7166丶小贤 说的方法可以。但在非activity类中调用dialog,你的业务设计就不太合理,交互性的操作还是要放在Activity里。

适配器也是一个类,在构造方法中传入上下文进去即可。

public class ListAdapter  extends RecyclerView.Adapter<ListAdapter.Holer> {

    private Context context;
    private List<Data> dataList;


//构造方法传入上下文
    public ListAdapter(Context context,List<Data> dataList){
        this.context=context;
        this.dataList=dataList;
    }

    @NonNull
    @NotNull
    @Override
    public ListAdapter.Holer onCreateViewHolder(@NonNull @NotNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.item_list, parent, false);
        return new ListAdapter.Holer(view);
    }

    @Override
    public void onBindViewHolder(@NonNull @NotNull Holer holder, int position) {
   
    }

    @Override
    public int getItemCount() {
        return dataList.size();
    }

    public class Holer extends RecyclerView.ViewHolder {
  

        public Holer(@NonNull View itemView) {
            super(itemView);

        }
    }
}

要学会合理利用接口来进行回调。在适配中新增一个接口
interface OnRvItemLongClickListener{
void onRvItemLongClick(....)
}
适配器新增 private OnRvItemLongClickListener mListener;
适配器新增方法
public void setOnRvItemLongClickListener(OnRvItemLongClickListener listener){
this.mListener=listener;
}
这样在相应的 Activity 或者 Fragment 使用适配器时就能回调出 item 的长按事件监听了。