0

我的问题是,当我想打电话给RecyclerViewNavigationDrawer和物品(阵列)Fragment我打电话通过RecyclerView不叫,但是当我不投入Fragment它可以被称为。所以这是我的代码。Android的 - 在导航中的片段抽屉调用RecyclerView

这是我Fragment.java和它说recyclerView.setLayoutManager(layoutManager);

public class fragment_1bakso extends Fragment { 

private AppCompatActivity compat; 
private RecyclerView recyclerView; 
private MakananAdapter adapter; 
public fragment_1bakso() { 
    // Required empty public constructor 
} 

ArrayList<Makanan> mList = new ArrayList<>(); 
MakananAdapter mAdapter; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    /*View v = inflater.inflate(R.layout.fragment_1bakso, container, false); 
    return v;*/ 
    View rootview = inflater.inflate(R.layout.activity_calling, container, false); 
    return rootview; 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    //mClass.setContentView(R.layout.activity_calling); 
    //return new fragment_1bakso(R.layout.activity_calling, this); 


    GridLayoutManager layoutManager = new GridLayoutManager(getActivity(), 2, GridLayoutManager.HORIZONTAL, false); 
    recyclerView.setLayoutManager(layoutManager); 

    mAdapter = new MakananAdapter(mList); 
    recyclerView.setAdapter(mAdapter); 


    fillData(); 
} 

private void fillData() { 
    Resources resources = getResources(); 
    String [] arJudul = resources.getStringArray(R.array.bakso); 
    String [] arHarga = resources.getStringArray(R.array.bakso_price); 
    String [] arDeskripsi = resources.getStringArray(R.array.bakso_desc); 
    String [] arLokasi = resources.getStringArray(R.array.bakso_locations); 
    String [] arDetail = resources.getStringArray(R.array.bakso_details); 
    TypedArray a = resources.obtainTypedArray(R.array.bakso_pict); 
    Drawable[] arFoto = new Drawable[a.length()]; 

    for (int i = 0; i < arFoto.length; i++) 
    { 
     arFoto[i] = a.getDrawable(i); 
    } 
    a.recycle(); 

    for (int i = 0; i < arJudul.length; i++) 
    { 
     mList.add(new Makanan(arJudul[i],arHarga[i],arFoto[i],arDeskripsi[i],arDetail[i],arLokasi[i])); 
    } 
    mAdapter.notifyDataSetChanged(); 

}} 

这里的错误是我的Fragment.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="id.sch.smktelkom_mlg.learn.sideview.fragment_1bakso"> 

    <!-- TODO: Update blank fragment layout --> 
    <include 
     layout="@layout/activity_calling" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 
</FrameLayout> 

这是我Activity_calling.xml是用于调用数组中的项目(RecyclerView)

<?xml version="1.0" encoding="utf-8"?> 
    <android.support.v7.widget.RecyclerView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/recyclerView" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:clipToPadding="false" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:scrollbars="vertical" 
    tools:context="id.sch.smktelkom_mlg.learn.sideview.activity_1bakso" /> 

帮帮我吧,感谢advanc即

+0

尝试使用LinearLayoutManager更改GridLayoutManager –

+0

将您的代码从'onCreate()'移动到'onViewCreated()' –

回答

2

您还没有初始化您的recyclerView。

recyclerView = (RecyclerView) view.findViewById(R.id.your_id); 

也将代码从onCreate()移动到onViewCreated();

+0

非常感谢,这是完美的工作 –

0

如果您需要网格布局管理器,你可以试试这个

GridLayoutManager layoutManager = new GridLayoutManager(this, 1); 

或者你可以去一个水平线性布局管理器,像这样

LinearLayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false) 

或者你可以去一个垂直线性布局经理像这样

LinearLayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false) 
+0

它说不能应用到'this' –

0
final RecyclerView.LayoutManager mLayoutManager =new GridLayoutManager(getContext(), 1); 
    recyclerView_drawer.setLayoutManager(mLayoutManager); 
    recyclerView_drawer.setItemAnimator(new DefaultItemAnimator()); 
    recyclerView_drawer.setAdapter(drawerAdapter); 

希望这段代码能帮助你。你也可以用相对布局替换帧布局,正如你在帧布局中所说的那样它不工作。

+0

但recyclerview_drawer中有什么? –

+0

recyclerView_drawer是我的Recyclerview对象,它是您的一个recyclerView。 –

0

你没有初始化你recyclerview这是可以做到:

RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.recyclerview); 

,并定义网格布局管理器为:

GridLayoutManager gridLayoutManager = new GridLayoutManager(getContext(), 2); 
    recyclerView .setHasFixedSize(true); 
    recyclerView .setItemAnimator(new DefaultItemAnimator()); 
    recyclerView .setLayoutManager(gridLayoutManager); 

而且是从的onCreate移动你的代码onViewCreated为:

@Override 
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 
} 

希望它有助于..快乐编码:)