【问题标题】:Android Recycleview App crashAndroid Recyclerview 应用程序崩溃
【发布时间】:2018-06-27 08:10:54
【问题描述】:

我正在尝试创建一个回收视图,并且我还在我的应用程序中使用标签布局。我一步一步地按照教程进行操作,但我不知道它为什么会崩溃。这是代码。我猜这部分有问题:

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

每当我将返回值更改为 0 时,应用程序都会运行,但 recycleview 中不会出现任何内容

public class Heros {
    public String name;
    public int img;

}

RecycleAdapter.java

import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;    
import java.util.ArrayList;



public class RecycleAdapter extends RecyclerView.Adapter<RecycleAdapter.HerosViewHolder> {
    ArrayList<Heros> herosList;
    public RecycleAdapter(ArrayList<Heros> heross){
        herosList=heross;
    }

    @Override
    public HerosViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.eachrow,parent,false);
        return new HerosViewHolder(view);
    }

    @Override
    public void onBindViewHolder(HerosViewHolder holder, int position) {
        Heros heros=herosList.get(position);
        holder.txtName.setText(heros.name);

    }

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

    public class HerosViewHolder extends RecyclerView.ViewHolder{
        public ImageView herosImg;
        public TextView txtName;
        public HerosViewHolder(View itemView) {
            super(itemView);
            herosImg=(ImageView) itemView.findViewById(R.id.imgg);
            txtName=(TextView)itemView.findViewById(R.id.txtHerosName);


        }
    }
}



public class PageFragment extends Fragment {
    public static final String ARG_PAGE = "ARG_PAGE";

    private int mPage;
    RecyclerView recyclerView;
    LinearLayoutManager manager;
    String[] names={"abs","vline","chest"};

    ArrayList<Heros> passName;

    public static PageFragment newInstance(int page) {
        Bundle args = new Bundle();
        args.putInt(ARG_PAGE, page);
        PageFragment fragment = new PageFragment();
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mPage = getArguments().getInt(ARG_PAGE);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        passName=new ArrayList<>();


        View view = inflater.inflate(R.layout.fragment_page, container,
                false);
        recyclerView=(RecyclerView)view.findViewById(R.id.rec);
        manager=new LinearLayoutManager(G.context);
        recyclerView.setLayoutManager(manager);
        recyclerView.setHasFixedSize(true);
        for (int i=0;i<3;i++){
            Heros heros=new Heros();
            heros.name=names[i];
            passName.add(heros);
        }
        recyclerView.setAdapter(new RecycleAdapter(passName));


        return view;
    }
}

【问题讨论】:

  • 你遇到了什么错误?
  • 添加崩溃的stacktrace
  • 显示你的日志猫
  • 在这个方法中使用这个关键字public RecycleAdapter(ArrayList&lt;Heros&gt; heross){ this.herosList=heross; }
  • 任何堆栈跟踪??分享你的日志!

标签: android eclipse android-studio android-recyclerview


【解决方案1】:

检查一下它可能对你有帮助 公共类 PageFragment 扩展片段 { 公共静态最终字符串 ARG_PAGE = "ARG_PAGE";

private int mPage;
RecyclerView recyclerView;
LinearLayoutManager manager;
String[] names={"abs","vline","chest"};

ArrayList<Heros> passName;
RecycleAdapter adapter;
public static PageFragment newInstance(int page) {
    Bundle args = new Bundle();
    args.putInt(ARG_PAGE, page);
    PageFragment fragment = new PageFragment();
    fragment.setArguments(args);
    return fragment;
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mPage = getArguments().getInt(ARG_PAGE);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    passName=new ArrayList<>();


    View view = inflater.inflate(R.layout.fragment_page, container,
            false);
    recyclerView=(RecyclerView)view.findViewById(R.id.rec);
    manager=new LinearLayoutManager(G.context);
    recyclerView.setLayoutManager(manager);
    recyclerView.setHasFixedSize(true);
    for (int i=0;i<3;i++){
        Heros heros=new Heros();
        heros.name=names[i];
        passName.add(heros);
    }
 RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(this);
                recyclerView.setLayoutManager(mLayoutManager);
adapter = new RecycleAdapter(this,passName);
    recyclerView.setAdapter(adapter);
    return view;
}

}

【讨论】:

    【解决方案2】:

    当你在getItemCount() 中返回 0 时,表示 RecyclerView 中有 0 个项目。这就是为什么您在RecyclerView 中看不到任何内容的原因。

    但是您面临的问题可能是由于适配器接收到错误的数据...

    【讨论】:

      【解决方案3】:

      尝试改变

       manager=new LinearLayoutManager(G.context);
      

      manager=new LinearLayoutManager(getActivity());
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-24
        • 2015-04-24
        • 1970-01-01
        • 1970-01-01
        • 2012-10-04
        • 1970-01-01
        相关资源
        最近更新 更多