如何从派生片段访问父布局

问题描述 投票:0回答:1

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) ...”我收到错误并且(显然)没有显示任何数据。

有什么想法吗?

我想创建一组派生片段,其行为与基础片段具有相同的行为。尝试调试发生的事情但没有成功。

android mvvm android-recyclerview layout
1个回答
0
投票

我在创建适配器之前添加了(简单不是吗?)一个布局管理器,这部分工作正常。

© www.soinside.com 2019 - 2024. All rights reserved.