Android Studio(Java)最新版本,。我创建了一个带有布局的“基本”片段(回收器视图)。当我尝试从派生片段访问它时,我得到: E/RecyclerView:未附加布局管理器;跳过布局
public abstract class ListViewFragment extends Fragment implements ListViewCallBack {
protected ListViewViewModel mViewModel;
protected FragmentListViewBinding binding;
//other code
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mViewModel = new ViewModelProvider(this).get(ListViewViewModel.class);
// TODO: Use the ViewModel
mViewModel.getList().observe(this, new Observer<List<BaseList>>() {
@Override
public void onChanged(List<BaseList> baseLists) {
ListViewListAdapter adapter = new ListViewListAdapter(baseLists);
binding.listviewView.setAdapter(adapter);
}
});
派生片段
public class SampleFragment extends ListViewFragment {
// get data from REST and update model
}
适配器和支架
public class ListViewListAdapter extends RecyclerView.Adapter<ListViewListAdapter.ViewHolder> {
List<BaseList> _services;
LayoutInflater inflater;
ListItemListClickListener onDeleteClickListener;
ListItemListClickListener onEditClickListener;
public ListViewListAdapter(List<BaseList> services) {
this._services = services;
}
public void SetOnEditListClickListener(ListItemListClickListener editClickListener) {
this.onEditClickListener = editClickListener;
}
public void SetOnDeleteListClickListener(ListItemListClickListener deleteClickListener) {
this.onDeleteClickListener = deleteClickListener;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
View listItem = layoutInflater.inflate(R.layout.listitem_item_layout, parent, false);
ViewHolder viewHolder = new ViewHolder(listItem);
return viewHolder;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
final BaseList myListData = _services.get(position);
holder.txtId.setText(Integer.toString(myListData.code));
holder.txtDescription.setText(myListData.Description);
holder.imgDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (onDeleteClickListener != null) {
onDeleteClickListener.OnClick(myListData);
}
}
});
holder.imgEdit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (onEditClickListener != null) {
onEditClickListener.OnClick(myListData);
}
}
});
}
@Override
public int getItemCount() {
return _services.size();
}
public static class ViewHolder extends RecyclerView.ViewHolder {
public TextView txtDescription;
public TextView txtId;
public ImageView imgEdit;
public ImageView imgDelete;
public ViewHolder(View itemView) {
super(itemView);
this.txtId = (TextView) itemView.findViewById(R.id.listitem_id);
this.txtDescription = (TextView) itemView.findViewById(R.id.listitem_description);
this.imgEdit = (ImageView) itemView.findViewById(R.id.listitem_edit);
this.imgDelete = (ImageView) itemView.findViewById(R.id.listitem_delete);
}
}
一切正常,直到我到达
“onChanged(List baseLists) ...”我收到错误并且(显然)没有显示任何数据。
有什么想法吗?
我想创建一组派生片段,其行为与基础片段具有相同的行为。尝试调试发生的事情但没有成功。
我在创建适配器之前添加了(简单不是吗?)一个布局管理器,这部分工作正常。