这是下面的我的片段代码。
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);
}
}
相同的代码,我在另一个片段和适配器中运行,并且在调试时没有错误。我尝试了很多Internet上可用的解决方案,但没有任何代码适合我。我认为数据未输入适配器中的活动列表名称。请帮助我,因为我坚持了大约3天。
我不知道这是您的帖子中的错误还是代码中的错误,但是在这里final activitycardAdaptor Acticityadaptor = new activitycardAdaptor(getContext(), project_id);
看起来有些奇怪,应该不是final ActivitycardAdaptor acticityAdaptor = new ActivitycardAdaptor(getContext(), project_id);
吗?