Я хочу добавить ProgressDialog
в адаптер. AFAIK, .this
для деятельности, и getActivity.getApplicationContext()
для фрагмента. Что относительно адаптера? Является ли это возможным?Контекст для RecyclerView.Adapter
У меня ошибка Unable to add window -- token null is not valid; is your activity running?
, когда я использую mContext.getApplicationContext()
.
EDIT:
Во фрагменте, я показываю карты,
allGroupsView = (RecyclerView) rootView.findViewById(R.id.allGroupsView);
adapterGroup = new AdapterGroup(getActivity().getApplicationContext(), results);
allGroupsView.setAdapter(adapterGroup);
allGroupsView.setLayoutManager(new LinearLayoutManager(getActivity().getApplicationContext()));
В классе AdapterGroup
public class AdapterGroup extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private Context mContext;
private LayoutInflater inflater;
List<DataGroup> data= Collections.emptyList();
DataGroup current;
public AdapterGroup(Context context, List<DataGroup> results) {
this.mContext = context;
inflater = LayoutInflater.from(mContext);
this.data = results;
}
// Inflate the layout when viewholder created
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.card_view_row, parent, false);
final MyHolder holder = new MyHolder(view);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("debug", String.valueOf(holder.getAdapterPosition()));
getDetails(Config.GET_GROUP_DETAILS_URL, data.get(holder.getAdapterPosition()).groupName, data.get(holder.getAdapterPosition()).description);
}
});
return holder;
}
private void getDetails(String url, String groupName, String description) {
groupName = groupName.replace(" ", "%20");
description = description.replace(" ", "%20");
final String finalGroupName = groupName;
final String finalDescription = description;
class GetDetails extends AsyncTask<String, Void, String> {
ProgressDialog loading;
@Override
protected void onPreExecute() {
super.onPreExecute();
loading = ProgressDialog.show(mContext.getApplicationContext(), null, "Please wait", true, true);
loading.setCancelable(false);
} // more code down from here
создать 'constructor' вашего адаптера и передать контекст из' деятельности/fragment' –
'Activity' уже является' context'. Зачем вам нужен getApplicationContext? Тот же вопрос для 'mContext.getApplicationContext()' ... –
@ cricket_007 класс не является 'Activity', поэтому я решил, что, возможно, я могу использовать тот же путь с фрагментом. Исключение оказалось невозможным:/ – August