错误RecyclerView:没有连接适配器;运行程序时跳过布局

时间:2017-07-28 04:33:27

标签: android xml android-layout firebase

我在stackoverflow上尝试过与我的问题相关的答案。我想在imageview和textview中显示来自firebase的数据。但是有一个错误RecyclerView:没有连接适配器;跳过布局。这是我的编码:

MenuManajemenKendaraanFragment.java

public class MenuManajemenKendaraanFragment extends Fragment {

private RecyclerView recyclerView;
private MenuManajemenKendaraanAdapter adapter;
private DatabaseReference mDatabase;
//private ProgressDialog progressDialog;
private List<DataKendaraan> dataKendaraan;


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    getActivity().setTitle("Manajemen Kendaraan");
    View v = inflater.inflate(R.layout.fragment_menu_manajemen_kendaraan, container, false);
    FloatingActionButton fab_tambah_kendaraan = (FloatingActionButton) v.findViewById(R.id.fab);

    mDatabase = FirebaseDatabase.getInstance().getReference();

    recyclerView = (RecyclerView) v.findViewById(R.id.listViewKendaraan);
    recyclerView.setHasFixedSize(true);

    final FragmentActivity c = getActivity();
    LinearLayoutManager layoutManager = new LinearLayoutManager(c);
    recyclerView.setLayoutManager(layoutManager);

    dataKendaraan = new ArrayList<>();
    mDatabase = FirebaseDatabase.getInstance().getReference(Constants.DATABASE_PATH_UPLOADS);

    mDatabase.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
                //dismissing the progress dialog

                //iterating through all the values in database
                for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
                    DataKendaraan upload = postSnapshot.getValue(DataKendaraan.class);
                    dataKendaraan.add(upload);
                }
            adapter = new MenuManajemenKendaraanAdapter(getActivity(), dataKendaraan);
            //adding adapter to recyclerview
            recyclerView.setAdapter(adapter);
        }

fragment_menu_manajemen_kendaraan.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">

<android.support.v7.widget.RecyclerView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentTop="true"
    android:clipToPadding="false"
    android:padding="5dp"
    android:scrollbars="vertical"
    android:id="@+id/listViewKendaraan">
</android.support.v7.widget.RecyclerView>

<android.support.design.widget.FloatingActionButton
    android:id="@+id/fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="16dp"
    android:clickable="true"
    app:fabSize="normal"
    android:src="@drawable/ic_add_fab"
    android:layout_gravity="end|bottom"/>
 </FrameLayout>

MenuManajemenKendraanAdapter.java

public class MenuManajemenKendaraanAdapter extends RecyclerView.Adapter<MenuManajemenKendaraanAdapter.ViewHolder> {

private Context context;
private List<DataKendaraan> dataKendaraan;

public MenuManajemenKendaraanAdapter(Context context, List<DataKendaraan> dataKendaraan) {
    this.dataKendaraan = dataKendaraan;
    this.context = context;
}



@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View v = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.adapter_menu_manajemen_kendaraan, parent, false);
    ViewHolder viewHolder = new ViewHolder(v);
    return viewHolder;
}

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
    DataKendaraan data = dataKendaraan.get(position);


    holder.tipeKendaraan.setText(data.getTipeKendaraan());
    Glide.with(context).load(data.getUriFotoKendaraan()).into(holder.fotoKendaraan);


}

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

class ViewHolder extends RecyclerView.ViewHolder {

    public TextView tipeKendaraan;
    public ImageView fotoKendaraan;

    public ViewHolder(View itemView) {
        super(itemView);

        tipeKendaraan = (TextView)itemView.findViewById(R.id.tipe_kendaraan);

    }
}

adapter_menu_manajemen_kendaraan.xml

<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="90dp"
android:layout_margin="5dp">
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/fragment_frame"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
</FrameLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="10dp">

<ImageView
    android:id="@+id/imageViewFotoKendaraan"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="2"
    android:layout_marginRight="10dp"/>
<LinearLayout
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:layout_weight="5">
    <TextView
        android:text="Tipe Kendaraan"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fontFamily="sans-serif-black"
        android:textColor="@color/colorAccent"
        android:paddingBottom="2dp"
        android:id="@+id/tipe_kendaraan"
        android:textSize="16sp"/>
</LinearLayout>
</LinearLayout>

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

 View v = LayoutInflater.from(context) .inflate(R.layout.adapter_menu_manajemen_kendaraan, parent, false);
ViewHolder viewHolder = new ViewHolder(v);
return viewHolder;