RecyclerView с CardView: ничего не отображается - PullRequest
0 голосов
/ 10 ноября 2019

Я использую RecyclerView с CardView. Я вставляю их обоих как фрагменты. Когда я нажимаю и изменяю, ничего не появляется. Может ли кто-нибудь дать мне совет, чтобы исправить это. Я думаю, что есть проблема в части, которая передает данные в часть CardView.

   public class favaoritesFragment extends Fragment {
        public static TextView data;
        private RecyclerView.Adapter mAdapter;
        private RecyclerView.LayoutManager mLayoutManager;
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState){
            View view = inflater.inflate(R.layout.fragment_favorites,container,false);
            RecyclerView  mRecyclerView = view.findViewById(R.id.recyclerView);
            mRecyclerView.setHasFixedSize(true);
            mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));


            mRecyclerView.setLayoutManager(mLayoutManager);
            mRecyclerView.setAdapter(mAdapter);
            ArrayList<Status> statusArrayList = new ArrayList<>();
            statusArrayList.add(new Status(R.drawable.ic_action_name,"Line2","Line3"));
            statusArrayList.add(new Status(R.drawable.common_google_signin_btn_icon_dark_focused,"Line2","Line3"));
            statusArrayList.add(new Status(R.drawable.ic_action_name,"Line2","Line3"));

            mAdapter = new RecyclerAdapter(statusArrayList);
         return view;
        }

    }

Часть RecyclerAdapter.

public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.RecyclerViewHolder> {
    private ArrayList<Status> mStatus;
        public static class RecyclerViewHolder extends RecyclerView.ViewHolder{
    public ImageView mimageView;
    public TextView mtextView1;
    public TextView mtextView2;
            public RecyclerViewHolder(@NonNull View itemView) {
                super(itemView);
                mimageView = itemView.findViewById(R.id.imageView);
                mtextView1 = itemView.findViewById(R.id.textView1);
                mtextView2 = itemView.findViewById(R.id.textView2);
            }
        }
    public RecyclerAdapter(ArrayList<Status> statusArrayList){
            mStatus = statusArrayList;
    }
        @NonNull
        @Override
        public RecyclerViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycleview,parent,false);
            RecyclerViewHolder evh = new RecyclerViewHolder(view);
            return evh;
        }

        @Override
        public void onBindViewHolder(@NonNull RecyclerViewHolder holder, int position) {
            Status currentItem = mStatus.get(position);

            holder.mimageView.setImageResource(currentItem.getmImageResource());
            holder.mtextView1.setText(currentItem.getmText1());
            holder.mtextView2.setText(currentItem.getmText2());
        }

        @Override
        public int getItemCount() {
            return mStatus.size();
        }
    }

Ответы [ 2 ]

1 голос
/ 10 ноября 2019

Решение 1: введите Adapter перед установкой на RecyclerView

 public class favaoritesFragment extends Fragment {
    public static TextView data;
    private RecyclerView.Adapter mAdapter;
    private RecyclerView.LayoutManager mLayoutManager;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState){
        View view = inflater.inflate(R.layout.fragment_favorites,container,false);

        ArrayList<Status> statusArrayList = new ArrayList<>();
        statusArrayList.add(new Status(R.drawable.ic_action_name,"Line2","Line3"));
        statusArrayList.add(new Status(R.drawable.common_google_signin_btn_icon_dark_focused,"Line2","Line3"));
        statusArrayList.add(new Status(R.drawable.ic_action_name,"Line2","Line3"));

        mAdapter = new RecyclerAdapter(statusArrayList);

        RecyclerView  mRecyclerView = view.findViewById(R.id.recyclerView);
        mRecyclerView.setHasFixedSize(true);
        mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
        mRecyclerView.setAdapter(mAdapter);
     return view;
    }

}

Решение 2: вызов mAdapter.notifyDataSetChanged()

public class favaoritesFragment extends Fragment {
    public static TextView data;
    private RecyclerView.Adapter mAdapter;
    private RecyclerView.LayoutManager mLayoutManager;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState){
        View view = inflater.inflate(R.layout.fragment_favorites,container,false);
        RecyclerView  mRecyclerView = view.findViewById(R.id.recyclerView);
        mRecyclerView.setHasFixedSize(true);
        mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));

        mRecyclerView.setAdapter(mAdapter);
        ArrayList<Status> statusArrayList = new ArrayList<>();
        statusArrayList.add(new Status(R.drawable.ic_action_name,"Line2","Line3"));
        statusArrayList.add(new Status(R.drawable.common_google_signin_btn_icon_dark_focused,"Line2","Line3"));
        statusArrayList.add(new Status(R.drawable.ic_action_name,"Line2","Line3"));

        mAdapter = new RecyclerAdapter(statusArrayList);
        mAdapter.notifyDataSetChanged();
     return view;
    }

}
0 голосов
/ 10 ноября 2019

Вы должны установить adapter на recyclerview после initialize на adapter. и вы установите layout manager на recyclerview два раза. поэтому вы должны удалить один.

public class favaoritesFragment extends Fragment {
        public static TextView data;
        private RecyclerView.Adapter mAdapter;
        private RecyclerView.LayoutManager mLayoutManager;
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState){
            View view = inflater.inflate(R.layout.fragment_favorites,container,false);
            RecyclerView  mRecyclerView = view.findViewById(R.id.recyclerView);
            mRecyclerView.setHasFixedSize(true);

            mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));

            // remove below line cause in above line you set layoutManager.
            //mRecyclerView.setLayoutManager(mLayoutManager);

            ArrayList<Status> statusArrayList = new ArrayList<>();
            statusArrayList.add(new Status(R.drawable.ic_action_name,"Line2","Line3"));
            statusArrayList.add(new Status(R.drawable.common_google_signin_btn_icon_dark_focused,"Line2","Line3"));
            statusArrayList.add(new Status(R.drawable.ic_action_name,"Line2","Line3"));

            mAdapter = new RecyclerAdapter(statusArrayList);
            // here you should set adapter to your recycler view after initialize the adapter.
            mRecyclerView.setAdapter(mAdapter); 
         return view;
        }

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...