Java 希望在片段中使用回收器视图。在设置适配器时创建了适配器,它显示错误

Java 希望在片段中使用回收器视图。在设置适配器时创建了适配器,它显示错误,java,android,Java,Android,我想建立一个应用程序,我可以通过它生成商务卡。所以我用navigaion抽屉。对于导航菜单,我为每个菜单和相应的XML布局使用片段类。在其中一个布局中,我想在recyclerview中显示我的卡片视图 MycardFragment.java (这是我想要显示recyclerview的片段类) package com.example.look.np.fragments; 导入android.content.Context; 导入android.os.Bundle; 导入android.suppor

我想建立一个应用程序,我可以通过它生成商务卡。所以我用navigaion抽屉。对于导航菜单,我为每个菜单和相应的XML布局使用片段类。在其中一个布局中,我想在recyclerview中显示我的卡片视图

MycardFragment.java (这是我想要显示recyclerview的片段类)

package com.example.look.np.fragments;
导入android.content.Context;
导入android.os.Bundle;
导入android.support.annotation.NonNull;
导入android.support.annotation.Nullable;
导入android.support.v4.app.Fragment;
导入android.support.v7.widget.LinearLayoutManager;
导入android.support.v7.widget.RecyclerView;
导入android.util.Log;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ListAdapter;
导入android.widget.TextView;
导入com.example.look.np.R;
导入com.example.look.np.models.Template;
导入com.example.look.np.utils.FirebaseMethod;
导入com.example.look.np.utils.RecycleServiceAdapter;
导入com.google.firebase.database.DataSnapshot;
导入com.google.firebase.database.DatabaseError;
导入com.google.firebase.database.DatabaseReference;
导入com.google.firebase.database.FirebaseDatabase;
导入com.google.firebase.database.ValueEventListener;
导入java.util.ArrayList;
导入java.util.List;
公共类MyCardFragment扩展了片段{
私有静态最终字符串TAG=“MyCardFragment”;
私有上下文;
私人回收站;
Firebase数据库;
数据库参考myRef;
列表数据;
公共MyCardFragment(){
//必需的空公共构造函数
}
//我尝试了这个部分,但它给了我错误
@凌驾
公共void-onAttach(上下文){
super.onAttach(上下文);
mContext=上下文;
}
@可空
@凌驾
创建视图时的公共视图(@NonNull LayoutInflater inflater、@Nullable ViewGroup container、@Nullable Bundle savedInstanceState){
视图=充气机。充气(右布局。碎片卡,容器,假);
database=FirebaseDatabase.getInstance();
myRef=database.getReference(“模板”);
//初始化模板模型类
模板模板=新模板();
// ...
//在片段布局中查找回收器视图
recyclerView=view.findViewById(R.id.recycler\u视图);
recyclerView.setHasFixedSize(true);
//将适配器连接到recyclerview以填充项目
RecycleWebAdapter=new RecycleWebAdapter(模板,inflater.getContext());//>>>这就是我遇到的错误
//设置布局管理器以定位项目
setLayoutManager(新的LinearLayoutManager(getActivity());
myRef.addValueEventListener(新的ValueEventListener(){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
//使用初始值调用此方法一次,然后再次调用
//每当更新此位置的数据时。
listdata=newarraylist();
对于(DataSnapshot dataSnapshot1:DataSnapshot.child(“模板”).getChildren()){
Template value=dataSnapshot1.getValue(Template.class);
模板火灾=新模板();
String name=value.getP_name();
字符串设计=value.getP_designation();
字符串email=value.getP_email();
字符串phone=value.getP_phone();
字符串地址=value.getC_address();
字符串c_name=value.getC_name();
火灾。setP_名称(名称);
消防。设置单位名称(设计);
fire.setP_电子邮件(电子邮件);
火灾。设置电话(电话);
火灾。setC_名称(c_名称);
火灾。setC_地址(地址);
listdata.add(fire);
}
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
//无法读取值
Log.w(“Hello”,“读取值失败”,databaseError.toException());
}
});
返回视图;
}
@凌驾
public void onStart(){
super.onStart();
}
}
我还为recycler视图创建了一个适配器,当我想将适配器设置为fragment类时,它会显示错误。它需要上下文和列表。对于上下文,我添加getActivity()bMycardFragment.java (这是我想要显示recyclerview的片段类)

package com.example.look.np.fragments;
导入android.content.Context;
导入android.os.Bundle;
导入android.support.annotation.NonNull;
导入android.support.annotation.Nullable;
导入android.support.v4.app.Fragment;
导入android.support.v7.widget.LinearLayoutManager;
导入android.support.v7.widget.RecyclerView;
导入android.util.Log;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ListAdapter;
导入android.widget.TextView;
导入com.example.look.np.R;
导入com.example.look.np.models.Template;
导入com.example.look.np.utils.FirebaseMethod;
导入com.example.look.np.utils.RecycleServiceAdapter;
导入com.google.firebase.database.DataSnapshot;
导入com.google.firebase.database.DatabaseError;
导入com.google.firebase.database.DatabaseReference;
导入com.google.firebase.database.FirebaseDatabase;
导入com.google.firebase.database.ValueEventListener;
导入java.util.ArrayList;
导入java.util.List;
公共类MyCardFragment扩展了片段{
私有静态最终字符串TAG=“MyCardFragment”;
私有上下文;
私人回收站;
Firebase数据库;
数据库参考
package com.example.look.np.fragments;

import android.content.Context;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListAdapter;
import android.widget.TextView;

import com.example.look.np.R;
import com.example.look.np.models.Template;
import com.example.look.np.utils.FirebaseMethod;
import com.example.look.np.utils.RecyclerviewAdapter;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;

import java.util.ArrayList;
import java.util.List;

public class MyCardFragment extends Fragment {

    private static final String TAG = "MyCardFragment";

    private Context mContext;

    private RecyclerView recyclerView;
    FirebaseDatabase database;
    DatabaseReference myRef ;
    List<Template> listdata;

    public MyCardFragment() {
       // Required empty public constructor
    }

    //i tried this section but it gimes me error
    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        mContext=context;
    }


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

    View view = inflater.inflate(R.layout.fragment_mycards,container,false);

        database = FirebaseDatabase.getInstance();
        myRef = database.getReference("template");

        // Initialize Template Model Class
        Template template = new Template();

        // ...
        // Lookup the Recycler view in fragment layout
        recyclerView = view.findViewById(R.id.recycler_view);
        recyclerView.setHasFixedSize(true);
        // Attach the adapter to the recyclerview to populate items
        RecyclerviewAdapter adapter = new RecyclerviewAdapter(template,inflater.getContext());//>>>This is the error i'm facig
        // Set layout manager to position the items
        recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));


        myRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                // This method is called once with the initial value and again
                // whenever data at this location is updated.
                listdata = new ArrayList<Template>();
                for(DataSnapshot dataSnapshot1 :dataSnapshot.child("template").getChildren()){

                    Template value = dataSnapshot1.getValue(Template.class);
                    Template fire = new Template();

                    String name = value.getP_name();
                    String desig = value.getP_designation();
                    String email = value.getP_email();
                    String phone = value.getP_phone();
                    String address = value.getC_address();
                    String c_name = value.getC_name();

                    fire.setP_name(name);
                    fire.setP_designation(desig);
                    fire.setP_email(email);
                    fire.setP_phone(phone);
                    fire.setC_name(c_name);
                    fire.setC_address(address);

                    listdata.add(fire);
                }
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {
                // Failed to read value
                Log.w("Hello", "Failed to read value.", databaseError.toException());
            }
        });

        return view;
    }

    @Override
    public void onStart() {
        super.onStart();
    }
}
package com.example.look.np.fragments;

import android.content.Context;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListAdapter;
import android.widget.TextView;

import com.example.look.np.R;
import com.example.look.np.models.Template;
import com.example.look.np.utils.FirebaseMethod;
import com.example.look.np.utils.RecyclerviewAdapter;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;

import java.util.ArrayList;
import java.util.List;

public class MyCardFragment extends Fragment {

    private static final String TAG = "MyCardFragment";

    private Context mContext;

    private RecyclerView recyclerView;
    FirebaseDatabase database;
    DatabaseReference myRef ;
    List<Template> listdata;

    public MyCardFragment() {
       // Required empty public constructor
    }

    //i tried this section but it gimes me error
    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        mContext=context;
    }


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

    View view = inflater.inflate(R.layout.fragment_mycards,container,false);

        database = FirebaseDatabase.getInstance();
        myRef = database.getReference("template");

        // Initialize Template Model Class
        Template template = new Template();

        // ...
        // Lookup the Recycler view in fragment layout
        recyclerView = view.findViewById(R.id.recycler_view);
        recyclerView.setHasFixedSize(true);
        // Attach the adapter to the recyclerview to populate items
        RecyclerviewAdapter adapter = new RecyclerviewAdapter(template,inflater.getContext());//>>>This is the error i'm facig
        // Set layout manager to position the items
        recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));


        myRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                // This method is called once with the initial value and again
                // whenever data at this location is updated.
                listdata = new ArrayList<Template>();
                for(DataSnapshot dataSnapshot1 :dataSnapshot.child("template").getChildren()){

                    Template value = dataSnapshot1.getValue(Template.class);
                    Template fire = new Template();

                    String name = value.getP_name();
                    String desig = value.getP_designation();
                    String email = value.getP_email();
                    String phone = value.getP_phone();
                    String address = value.getC_address();
                    String c_name = value.getC_name();

                    fire.setP_name(name);
                    fire.setP_designation(desig);
                    fire.setP_email(email);
                    fire.setP_phone(phone);
                    fire.setC_name(c_name);
                    fire.setC_address(address);

                    listdata.add(fire);
                }
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {
                // Failed to read value
                Log.w("Hello", "Failed to read value.", databaseError.toException());
            }
        });

        return view;
    }

    @Override
    public void onStart() {
        super.onStart();
    }
}
package com.example.look.np.fragments;

import android.content.Context;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListAdapter;
import android.widget.TextView;

import com.example.look.np.R;
import com.example.look.np.models.Template;
import com.example.look.np.utils.FirebaseMethod;
import com.example.look.np.utils.RecyclerviewAdapter;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;

import java.util.ArrayList;
import java.util.List;

public class MyCardFragment extends Fragment {

    private static final String TAG = "MyCardFragment";

    private Context mContext;

    private RecyclerView recyclerView;
    FirebaseDatabase database;
    DatabaseReference myRef ;
    List<Template> listdata;

    public MyCardFragment() {
       // Required empty public constructor
    }

    //i tried this section but it gimes me error
    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        mContext=context;
    }


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

    View view = inflater.inflate(R.layout.fragment_mycards,container,false);

        database = FirebaseDatabase.getInstance();
        myRef = database.getReference("template");

        // Initialize Template Model Class
        Template template = new Template();

        // ...
        // Lookup the Recycler view in fragment layout
        recyclerView = view.findViewById(R.id.recycler_view);
        recyclerView.setHasFixedSize(true);
        // Attach the adapter to the recyclerview to populate items
        RecyclerviewAdapter adapter = new RecyclerviewAdapter(template,inflater.getContext());//>>>This is the error i'm facig
        // Set layout manager to position the items
        recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));


        myRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                // This method is called once with the initial value and again
                // whenever data at this location is updated.
                listdata = new ArrayList<Template>();
                for(DataSnapshot dataSnapshot1 :dataSnapshot.child("template").getChildren()){

                    Template value = dataSnapshot1.getValue(Template.class);
                    Template fire = new Template();

                    String name = value.getP_name();
                    String desig = value.getP_designation();
                    String email = value.getP_email();
                    String phone = value.getP_phone();
                    String address = value.getC_address();
                    String c_name = value.getC_name();

                    fire.setP_name(name);
                    fire.setP_designation(desig);
                    fire.setP_email(email);
                    fire.setP_phone(phone);
                    fire.setC_name(c_name);
                    fire.setC_address(address);

                    listdata.add(fire);
                }
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {
                // Failed to read value
                Log.w("Hello", "Failed to read value.", databaseError.toException());
            }
        });

        return view;
    }

    @Override
    public void onStart() {
        super.onStart();
    }
} 
    I tried getActivity() but it  show me error
    i also tried this
      @Override
        public void onAttach(Context context) {
            super.onAttach(context);
            mContext=context;
        }





    //This is adapter class for my Recyclerview
    RecyclerAdater.java

package com.example.look.np.utils;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.example.look.np.R;
import com.example.look.np.models.Template;

import java.util.List;


public class RecyclerviewAdapter extends RecyclerView.Adapter<RecyclerviewAdapter.MyHolder>{

    // ... constructor and member variables

    // Usually involves inflating a layout from XML and returning the holder
    List<Template> listdata;
    Context context;

    public RecyclerviewAdapter(List<Template> listdata, Context context) {
        this.listdata = listdata;
        this.context = context;
    }

    @Override
    public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        // Inflate the custom layout
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview,parent,false);

        // Return a new holder instance
        MyHolder myHolder = new MyHolder(view);
        return myHolder;
    }


    public void onBindViewHolder(MyHolder holder, int position) {

        Template data = listdata.get(position);
        holder.pname.setText(data.getP_name());
        holder.pdesignation.setText(data.getP_designation());
        holder.pemail.setText(data.getP_email());
        holder.pphone.setText(data.getP_phone());
        holder.cname.setText(data.getC_name());
        holder.caddress.setText(data.getC_address());
    }

    @Override
    public int getItemCount() {
        //return listdata.size();
        int arr = 0;

        try{
            if(listdata.size()==0){
                arr = 0;
            }
            else{
                arr=listdata.size();
            }
        }catch (Exception e){
            e.printStackTrace();
        }

        return arr;

    }


    class MyHolder extends RecyclerView.ViewHolder{
        // Your holder should contain a member variable
        // for any view that will be set as you render a row
        TextView pname,caddress,pemail,pdesignation,pphone,cname;

        // We also create a constructor that accepts the entire item row
        // and does the view lookups to find each subview

        public MyHolder(View itemView) {
            // Stores the itemView in a public final member variable that can be used
            // to access the context from any ViewHolder instance.
            super(itemView);

            pname = (TextView) itemView.findViewById(R.id.txt_personName);
            caddress = (TextView) itemView.findViewById(R.id.txt_address);
            pemail = (TextView) itemView.findViewById(R.id.txt_email);
            pdesignation = (TextView) itemView.findViewById(R.id.txt_designation);
            pphone = (TextView) itemView.findViewById(R.id.txt_phone);
            cname = (TextView) itemView.findViewById(R.id.txt_companyName);

        }
    }
}
LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
layoutManager.setOrientation(LinearLayoutManager.VERTICAL
recyclerview.setLayoutManager(layoutManager);
recyclerview.setHasFixedSize(true);

recyclerviewAdapter adapter = new recyclerviewAdapterAdapter(listdata,getActivity());        

recyclerview.setAdapter(adapter);