>source

나는 안드로이드 스튜디오를 처음 사용합니다. RecycleView에 항목을 표시하려고하는데 아무것도 표시되지 않습니다.

이것은 안드로이드 스튜디오가 말하는 것입니다.


E/RecyclerView: No layout manager attached; skipping layout

내 조각 :

public class Articles extends Fragment {
    View root;
    RecyclerView recyclerView;
    NewsList[] myListData = new NewsList[] {
            new NewsList("Article 1", "Some Author"),
            new NewsList("Article2", "Some Author"),
            new NewsList("Article3", "Some Author"),
    };
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    }
    public View onCreateView(@NonNull LayoutInflater inflater,
                             ViewGroup container, Bundle savedInstanceState) {
        root = inflater.inflate(R.layout.fragment_articles, container, false);
        recyclerView = root.findViewById(R.id.recyclerView);
        NewsAdapter adapter = new NewsAdapter(myListData);
        recyclerView.setHasFixedSize(true);
        recyclerView.setAdapter(adapter);
        return root;
    }

다음은 내 Adapter 클래스의 코드입니다.

public class NewsAdapter extends RecyclerView.Adapter<NewsAdapter.ViewHolder> {
    private NewsList[] listdata;
    // RecyclerView recyclerView;
    public NewsAdapter(NewsList[] listdata) {
        this.listdata = listdata;
    }
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
        View listItem= layoutInflater.inflate(R.layout.list_item, parent, false);
        ViewHolder viewHolder = new ViewHolder(listItem);
        return viewHolder;
    }
    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        final NewsList myListData = listdata[position];
        holder.textView1.setText(listdata[position].getTitle());
        holder.textView2.setText(listdata[position].getAuthor());
        holder.relativeLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(view.getContext(),"click on item: "+myListData.getTitle(),Toast.LENGTH_LONG).show();
            }
        });
    }
    @Override
    public int getItemCount() {
        return listdata.length;
    }
    public static class ViewHolder extends RecyclerView.ViewHolder {
        public TextView textView1;
        public TextView textView2;
        public RelativeLayout relativeLayout;
        public ViewHolder(View itemView) {
            super(itemView);
            this.textView1 = (TextView) itemView.findViewById(R.id.textView1);
            this.textView2 = (TextView) itemView.findViewById(R.id.textView2);
            relativeLayout = (RelativeLayout)itemView.findViewById(R.id.relativeLayout);
        }
    }

이전에는 조각을 열 때 앱이 충돌하는 오류가 있었지만 지금은 RecyclerView를 건너 뜁니다. 이 문제를 해결하는 데 도움을 주시면 감사하겠습니다.


  • 답변 # 1

    추가해야합니다 layoutManager 리사이클 러보기로 :

       public View onCreateView(@NonNull LayoutInflater inflater,
                                 ViewGroup container, Bundle savedInstanceState) {
            root = inflater.inflate(R.layout.fragment_articles, container, false);
            recyclerView = root.findViewById(R.id.recyclerView);
            NewsAdapter adapter = new NewsAdapter(myListData);
            recyclerView.setHasFixedSize(true);
            // Add this line
            recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()))
            recyclerView.setAdapter(adapter);
    
            return root;
        }
    
    

  • 답변 # 2

    Recyclerview에 대한 레이아웃 관리자가 있어야합니다. 예를 들어, 뷰를 확장 한 후 다음을 추가하여 선형을 사용할 수 있습니다.

    recyclerView.setLayoutManager(new LinearLayoutManager(this));
    
    

관련 자료

  • 이전 java - ObjectInputStream을 사용한 EOFException
  • 다음 Plain Vanilla Javascript에서 hide () 및 show ()를 만드는 방법