【问题标题】:RecyclerView in Fragment initializeFragment中的RecyclerView初始化
【发布时间】:2016-07-04 06:42:18
【问题描述】:

我是 recyclerview 的新手,在 cardview 中使用它,有人可以告诉我如何初始化它吗?

我知道我必须以某种方式将它放在 onCreateView 中,而不是在 ViewCreated 中,我的代码:

  public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
                         @Nullable Bundle savedInstanceState) {

return inflater.inflate(R.layout.fragment_genres, container, false);

以及我在 Activity 上使用的回收器代码,但现在我想在片段中触发它

  recyclerView = (RecyclerView) getActivity().findViewById(R.id.recyclerView);
    recyclerView.setHasFixedSize(true);
    layoutManager = new LinearLayoutManager(getActivity());
    recyclerView.setLayoutManager(layoutManager);

数据的踪迹:

JSON>get>DataModel>Adapter>Recycler>CardView

当我在 onCreatedView 中有它时,LogCat 说:

  java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference

【问题讨论】:

    标签: java android


    【解决方案1】:

    就这样

    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
                         @Nullable Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.fragment_genres, container, false);
    recyclerView = (RecyclerView) v.findViewById(R.id.recyclerView);
    recyclerView.setHasFixedSize(true);
    layoutManager = new LinearLayoutManager(getActivity());
    recyclerView.setLayoutManager(layoutManager);
    return v;
    

    【讨论】:

    • 可以,但在 7 分钟内,有时间限制
    • 我接受了答案,您知道如何为此设置适配器吗?适配器 = 新 CardAdapter(listSuperSongs, getActivity()); recyclerView.setAdapter(适配器);以这种方式尝试但是...列表为空,因此无法加载。它来自互联网 json,当用户对不同的列表元素进行点击操作时。
    • 你什么时候能拿到名单SuperSongs?您可以使用空数组列表加载适配器,并在获取数据时更新 listSuperSongs。只需调用 adapter.notifydatasetchanged();插入后。
    • 私人名单 listSuperSongs;列表不是空的,它只是空的。我应该怎么办?用一些 " " 值创建列表对象?
    • List listSuperSongs = new ArrayList();
    【解决方案2】:

    试试这个

      public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    View v = inflater.inflate(R.layout.fragment_genres, container, false);
    recyclerView = (RecyclerView) getActivity().findViewById(R.id.recyclerView); recyclerView.setHasFixedSize(true); layoutManager = new LinearLayoutManager(getActivity()); recyclerView.setLayoutManager(layoutManager);
        return v;
    

    【讨论】:

      【解决方案3】:

      这里我成功地将 Recyclerview 集成到了一个名为 MainFragment 的片段中 item click for recycler view 主要活动中的片段的初始化不存在。使用它来引用片段

      public class MainActivity extends AppCompatActivity {
      @Override
      protected void onCreate(Bundle savedInstanceState) {
      super. onCreate(savedInstanceState);
      setContentView(R . layout . activity_main);
      if(savedInstanceState == null ) {
      getSupportFragmentManager() . beginTransaction()
      .replace(R . id . container, MainFragment . newInstance())
      .commit();
      

      【讨论】:

        猜你喜欢
        • 2023-02-03
        • 2021-12-14
        • 2020-06-08
        • 2020-07-12
        • 1970-01-01
        • 1970-01-01
        • 2013-05-23
        • 1970-01-01
        • 2020-01-18
        相关资源
        最近更新 更多