Recyclerview не показывает данные, даже если все в порядке - PullRequest
0 голосов
/ 24 апреля 2020

Это мой фрагмент кода ниже.

public class pendingactivity extends Fragment {

MyViewModel myViewModel;
List<Activity_> activity_list;
CheckBox act_check;
View view;
int project_id;
Projectid_pointing_towards_activity PPta;


public pendingactivity() {
    // Required empty public constructor
}


  @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    RecyclerView mrecyclerView;

    //Inflate the layout for this fragment
    view = inflater.inflate(R.layout.fragment_pendingactivity, container, false);
    mrecyclerView = (RecyclerView) view.findViewById(R.id.recycler_view_frag1);
    act_check = (CheckBox) view.findViewById(R.id.activity_check);
    myViewModel = ViewModelProviders.of(getActivity()).get(MyViewModel.class);
    myViewModel.GetAllPPTA().observe(this, new Observer<List<Projectid_pointing_towards_activity>>() 
    {
        @Override
        public void onChanged(List<Projectid_pointing_towards_activity> PPTA) {
            PPta = PPTA.get(1);
            project_id = PPta.getProject_id();
        }
    });
    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity());
    mrecyclerView.setLayoutManager(linearLayoutManager);

    final activitycardAdaptor Acticityadaptor = new activitycardAdaptor(getContext(), project_id);


    myViewModel.GetAllActivity().observe(this, new Observer<List<Dactivity>>() {
        @Override
        public void onChanged(List<Dactivity> dactivities) {


            Acticityadaptor.setActivity(dactivities);

        }
    });
    mrecyclerView.setAdapter(Acticityadaptor);


    return view;

}

    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);


  }


 }

ниже мой код адаптера recyler

package com.example.builderpro;



public class activitycardAdaptor extends RecyclerView.Adapter<ActivityCardViewHolder> {


private Context context;
private List<Dactivity> mactivity;
int project_id;


public activitycardAdaptor(Context context, int id) {
    this.context = context;
    this.project_id = id;
}

@Override
public ActivityCardViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View mview = LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview_activity, parent, 
false);

    return new ActivityCardViewHolder(mview);
}

@Override
public void onBindViewHolder(ActivityCardViewHolder holder, int position) {
    Dactivity dactivity = mactivity.get(position);
    holder.Activity_title.setText(dactivity.getName());
    holder.Activity_Type.setText(dactivity.getType());
    Calendar calendar = Calendar.getInstance();
    String curentDate = DateFormat.getDateInstance(DateFormat.FULL).format(calendar.getTime());
    holder.Date.setText(curentDate);


}

@Override
public int getItemCount() {

    return mactivity == null ? 0 : mactivity.size();


}


public void setActivity(List<Dactivity> dactivities) {
    Dactivity current_activity;
    for (int i = 0; i < dactivities.size(); i++) {
        current_activity = dactivities.get(i);
        if (project_id == current_activity.getProject_id()) {
            mactivity.add(current_activity);
        }

    }
    notifyDataSetChanged();

}
}

class ActivityCardViewHolder extends RecyclerView.ViewHolder {
CardView mcardview;
TextView Activity_title, Activity_Type, Date;
CheckBox activity_check;


public ActivityCardViewHolder(View itemView) {
    super(itemView);

    Activity_title = itemView.findViewById(R.id.Activity_name);
    Activity_Type = itemView.findViewById(R.id.activity_type);
    Date = itemView.findViewById(R.id.date);
    activity_check = itemView.findViewById(R.id.activity_check);

    mcardview = itemView.findViewById(R.id.activity_card);


}
}

Тот же код, который я запускаю в другом фрагменте и адаптере, и нет ошибки во время отладки. Я пробовал много решений, доступных на inte rnet, но ничего не подходит для моего кода. я думаю, что данные не входят в список имени Mactive в адаптере. Пожалуйста, помогите мне, потому что я застрял на этом около 3 дней.

1 Ответ

0 голосов
/ 24 апреля 2020

Я не знаю, является ли это ошибкой в ​​вашем посте или в вашем коде, но здесь что-то выглядит довольно странно final activitycardAdaptor Acticityadaptor = new activitycardAdaptor(getContext(), project_id); Разве это не должно быть final ActivitycardAdaptor acticityAdaptor = new ActivitycardAdaptor(getContext(), project_id);?

...