Android com.google.firebase.database.DatabaseException:Can';t将java.lang.String类型的对象转换为Recension

Android com.google.firebase.database.DatabaseException:Can';t将java.lang.String类型的对象转换为Recension,android,firebase,firebase-realtime-database,android-recyclerview,Android,Firebase,Firebase Realtime Database,Android Recyclerview,我有一个很多人都有过的问题,但我不明白如何才能摆脱它。请帮我拿我的箱子,不要标为复制品。我有一个与firebase链接的回收视图。 我必须检索“修订”后面的所有项目。 所有项目都有一些文本视图,其中写入了数据库中的一些字符串。但是,当我尝试检索数据库中的项目时,会出现以下错误: 这是我的最新课程: public class Recensione { private String Commento; private String Rating; private String Username; p

我有一个很多人都有过的问题,但我不明白如何才能摆脱它。请帮我拿我的箱子,不要标为复制品。我有一个与firebase链接的回收视图。 我必须检索“修订”后面的所有项目。 所有项目都有一些文本视图,其中写入了数据库中的一些字符串。但是,当我尝试检索数据库中的项目时,会出现以下错误:

这是我的最新课程:

public class Recensione {
private String Commento;
private String Rating;
private String Username;
private String Data;

public String getData() {
    return Data;
}

public void setData(String data) {
    Data = data;
}

public String getUsername() {
    return Username;
}

public void setUsername(String username) {
    Username = username;
}

public String getRating() {
    return Rating;
}

public void setRating(String rating) {
    Rating = rating;
}


public String getCommento() {
    return Commento;
}

public void setCommento(String commento) {
    Commento = commento;
}}
这里是我的占位符片段/DisplayStudio.class:

public static class PlaceholderFragment extends Fragment implements OnMapReadyCallback {

    private GoogleMap googleMapa;

    /**
     * The fragment argument representing the section number for this
     * fragment.
     */
    private static final String ARG_SECTION_NUMBER = "section_number";

    public PlaceholderFragment() {
    }

    /**
     * Returns a new instance of this fragment for the given section
     * number.
     */
    public static DisplayStudio.PlaceholderFragment newInstance(int sectionNumber) {
        DisplayStudio.PlaceholderFragment fragment = new DisplayStudio.PlaceholderFragment();
        Bundle args = new Bundle();
        args.putInt(ARG_SECTION_NUMBER, sectionNumber);
        fragment.setArguments(args);
        return fragment;
    }

    RecyclerView rv;
    MyCommentsAdapter adapter;
    ArrayList<Recensione> recensioni = new ArrayList<>();
    DatabaseReference mDatabase;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        Bundle bl = getArguments();
        if (getArguments().getInt(ARG_SECTION_NUMBER)==1)
        {

            View rootView = inflater.inflate(R.layout.fragment_profilo, container, false);

            Intent intent = getActivity().getIntent();

            String desc = intent.getStringExtra("Desc");
            final String names = intent.getStringExtra("Nome");

            TextView test = (TextView) rootView.findViewById(R.id.nome);
            TextView descr = (TextView) rootView.findViewById(R.id.desc);
            TextView key = (TextView) rootView.findViewById(R.id.key);

            test.setText(names);
            descr.setText(desc);

            String MyKey = bl.getString(MY_STUDIO_KEY);
            key.setText(MyKey);

        return rootView;
        }
        else if(getArguments().getInt(ARG_SECTION_NUMBER)==2)
        {


            Intent intent = getActivity().getIntent();
            final String names = intent.getStringExtra("Nome");

            //INITIALIZE FIREBASE
            mDatabase = FirebaseDatabase.getInstance().getReference().child("Studi").child(names).child("valutazioni").child("recensioni");
            mDatabase.keepSynced(true);
            /* Ricarica tutte le opinioni */
            refreshData();
            View rootView = inflater.inflate(R.layout.fragment_opinioni, container, false);
            rv = (RecyclerView) rootView.findViewById(R.id.MyRecView2s);

            Recensione rc = new Recensione();
            rc.setUsername("Luca");
            rc.setCommento("Non male, da app");
            rc.setRating("10");
            rc.setData("oggi");
            //ci vuole il push prima del setvalue
            mDatabase.child(names).setValue(rc);
            rv.setLayoutManager(new LinearLayoutManager(getActivity()));

            return rootView;
        }
        else
        {
            View rootView = inflater.inflate(R.layout.fragment_maps, container, false);
            SupportMapFragment mapFragment = SupportMapFragment.newInstance();
            getChildFragmentManager().beginTransaction().replace(R.id.map , mapFragment).commit();
            mapFragment.getMapAsync(this);


            if (mapFragment == null) {
                getChildFragmentManager().beginTransaction().replace(R.id.map , mapFragment).commit();
                mapFragment.getMapAsync(this);
            }


            return rootView;
        }
    }
    private void getUpdates(DataSnapshot dataSnapshot){

        recensioni.clear();

        for (DataSnapshot ds : dataSnapshot.getChildren()){
            Recensione s=new Recensione();
            s.setUsername(ds.getValue(Recensione.class).getUsername());
            s.setCommento(ds.getValue(Recensione.class).getCommento());
            s.setRating(ds.getValue(Recensione.class).getRating());
            s.setData(ds.getValue(Recensione.class).getData());
            recensioni.add(s);
        }

        if(recensioni.size()>0){
            adapter=new MyCommentsAdapter(getActivity(), recensioni);
            rv.setAdapter(adapter);
        }else {
            Toast.makeText(getActivity(),"NON CI SONO ANCORA OPINIONI.", Toast.LENGTH_LONG).show();

        }
    }
    //RETRIEVE
    private void refreshData(){

        mDatabase.addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                getUpdates(dataSnapshot);
            }

            @Override
            public void onChildChanged(DataSnapshot dataSnapshot, String s) {
                getUpdates(dataSnapshot);
            }

            @Override
            public void onChildRemoved(DataSnapshot dataSnapshot) {

            }

            @Override
            public void onChildMoved(DataSnapshot dataSnapshot, String s) {

            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });

    }

    @Override
    public void onMapReady(GoogleMap googleMap) {
        googleMapa = googleMap;
        Intent intent = getActivity().getIntent();

        final String names = intent.getStringExtra("Nome");

        String posizione1 = intent.getStringExtra("Posizione1");
        String posizione2 = intent.getStringExtra("Posizione2");

        try
        {
            //Toast.makeText(MapsActivity.this,posizione1 + " " + posizione2 , Toast.LENGTH_LONG).show();   //not a double
            Double protein = Double.parseDouble(posizione1);
            Double protein2 = Double.parseDouble(posizione2);
             LatLng sydney = new LatLng(protein,protein2);                                                                           //custom icon in drawable
            googleMap.addMarker(new MarkerOptions().position(sydney).title(names)/*.icon(BitmapDescriptorFactory.fromResource(R.drawable.cast_abc_scrubber_control_off_mtrl_alpha))*/);
            googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(sydney, 12.0f));

        }
        catch(NumberFormatException e)
        {
            //  Toast.makeText(DisplayStudio.this, e.toString() , Toast.LENGTH_LONG).show();   //not a double
        }



    }
}

/**
 * A {@link FragmentPagerAdapter} that returns a fragment corresponding to
 * one of the sections/tabs/pages.
 */
public class SectionsPagerAdapter extends FragmentPagerAdapter {

    public SectionsPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        // getItem is called to instantiate the fragment for the given page.
        // Return a PlaceholderFragment (defined as a static inner class below).
        return DisplayStudio.PlaceholderFragment.newInstance(position + 1);
    }

    @Override
    public int getCount() {
        // Show 3 total pages.
        return 3;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        switch (position) {
            case 0:
                return "PROFILO";
            case 1:
                return "OPINIONI";
            case 2:
                return "MAPS";
        }
        return null;
    }
}}
public静态类PlaceholderFragment扩展了mapreadycallback上的片段实现{
私人谷歌地图谷歌地图;
/**
*表示此文件节号的片段参数
*碎片。
*/
私有静态最终字符串ARG\u SECTION\u NUMBER=“SECTION\u NUMBER”;
公共占位符片段(){
}
/**
*返回给定节的此片段的新实例
*号码。
*/
publicstaticdisplaystudio.placeholderFragmentNewInstance(int sectionNumber){
DisplayStudio.PlaceholderFragment=新的DisplayStudio.PlaceholderFragment();
Bundle args=新Bundle();
参数Putin(参数段号,段号);
fragment.setArguments(args);
返回片段;
}
回收视图rv;
MyCommentsAdapter适配器;
ArrayList recensioni=新的ArrayList();
数据库参考数据库;
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
Bundle bl=getArguments();
if(getArguments().getInt(ARG\u节号)==1)
{
视图根视图=充气机。充气(R.layout.fragment_profilo,container,false);
Intent Intent=getActivity().getIntent();
String desc=intent.getStringExtra(“desc”);
最终字符串名称=intent.getStringExtra(“Nome”);
TextView测试=(TextView)rootView.findViewById(R.id.nome);
TextView descr=(TextView)rootView.findviewbyd(R.id.desc);
TextView键=(TextView)rootView.findViewById(R.id.key);
test.setText(名称);
描述设置文本(描述);
String MyKey=bl.getString(MY_STUDIO_KEY);
key.setText(MyKey);
返回rootView;
}
else if(getArguments().getInt(ARG\u节号)==2)
{
Intent Intent=getActivity().getIntent();
最终字符串名称=intent.getStringExtra(“Nome”);
//初始化FIREBASE
mDatabase=FirebaseDatabase.getInstance().getReference().child(“Studi”).child(names.child(“valutazioni”).child(“recensioni”);
mDatabase.keepSynced(true);
/*里卡里卡·塔特·勒奥皮尼奥尼*/
刷新数据();
视图根视图=充气机。充气(R.layout.fragment\u opinioni,container,false);
rv=(RecyclerView)rootView.findviewbyd(R.id.MyRecView2s);
Recension rc=新Recension();
rc.setUsername(“Luca”);
rc.setCommento(“非男性,da应用程序”);
rc.设定值(“10”);
rc.setData(“oggi”);
//ci vuole il推送原始设置值
mDatabase.child(名称).setValue(rc);
rv.setLayoutManager(新的LinearLayoutManager(getActivity());
返回rootView;
}
其他的
{
视图根视图=充气机。充气(R.layout.fragment\u映射,容器,false);
SupportMapFragment mapFragment=SupportMapFragment.newInstance();
getChildFragmentManager().beginTransaction().replace(R.id.map,mapFragment.commit();
getMapAsync(这个);
if(mapFragment==null){
getChildFragmentManager().beginTransaction().replace(R.id.map,mapFragment.commit();
getMapAsync(这个);
}
返回rootView;
}
}
私有void getUpdates(DataSnapshot DataSnapshot){
第i.clear()款;
对于(DataSnapshot ds:DataSnapshot.getChildren()){
Recension s=新的Recension();
s、 setUsername(ds.getValue(recension.class.getUsername());
s、 setCommento(ds.getValue(recension.class.getCommento());
s、 setRating(ds.getValue(recension.class.getRating());
s、 setData(ds.getValue(recension.class.getData());
第i条增补;
}
如果(recensioni.size()>0){
adapter=new MyCommentsAdapter(getActivity(),recensioni);
rv.设置适配器(适配器);
}否则{
Toast.makeText(getActivity(),“NON-CI SONO ANCORA OPINIONI.”,Toast.LENGTH_LONG.show();
}
}
//取回
私有数据(){
mDatabase.addChildEventListener(新的ChildEventListener(){
@凌驾
公共void onChildAdded(DataSnapshot DataSnapshot,字符串s){
获取更新(dataSnapshot);
}
@凌驾
公共void onChildChanged(DataSnapshot DataSnapshot,字符串s){
获取更新(dataSnapshot);
}
@凌驾
ChildRemoved上的公共void(DataSnapshot DataSnapshot){
}
@凌驾
已移动ChildMoved上的公共void(DataSnapshot DataSnapshot,字符串s){
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
}
});
}
@凌驾
4月1日公开作废(谷歌地图谷歌地图){
谷歌地图=谷歌地图;
Intent Intent=getActivity().getIntent();
最终字符串名称=intent.getStringExtra(“Nome”);
字符串posizione1=intent.getStringExtra(“posizione1”);
字符串posizione2=intent.getStringExtra(“posizione2”);
尝试
{
public static class PlaceholderFragment extends Fragment implements OnMapReadyCallback {

    private GoogleMap googleMapa;

    /**
     * The fragment argument representing the section number for this
     * fragment.
     */
    private static final String ARG_SECTION_NUMBER = "section_number";

    public PlaceholderFragment() {
    }

    /**
     * Returns a new instance of this fragment for the given section
     * number.
     */
    public static DisplayStudio.PlaceholderFragment newInstance(int sectionNumber) {
        DisplayStudio.PlaceholderFragment fragment = new DisplayStudio.PlaceholderFragment();
        Bundle args = new Bundle();
        args.putInt(ARG_SECTION_NUMBER, sectionNumber);
        fragment.setArguments(args);
        return fragment;
    }

    RecyclerView rv;
    MyCommentsAdapter adapter;
    ArrayList<Recensione> recensioni = new ArrayList<>();
    DatabaseReference mDatabase;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        Bundle bl = getArguments();
        if (getArguments().getInt(ARG_SECTION_NUMBER)==1)
        {

            View rootView = inflater.inflate(R.layout.fragment_profilo, container, false);

            Intent intent = getActivity().getIntent();

            String desc = intent.getStringExtra("Desc");
            final String names = intent.getStringExtra("Nome");

            TextView test = (TextView) rootView.findViewById(R.id.nome);
            TextView descr = (TextView) rootView.findViewById(R.id.desc);
            TextView key = (TextView) rootView.findViewById(R.id.key);

            test.setText(names);
            descr.setText(desc);

            String MyKey = bl.getString(MY_STUDIO_KEY);
            key.setText(MyKey);

        return rootView;
        }
        else if(getArguments().getInt(ARG_SECTION_NUMBER)==2)
        {


            Intent intent = getActivity().getIntent();
            final String names = intent.getStringExtra("Nome");

            //INITIALIZE FIREBASE
            mDatabase = FirebaseDatabase.getInstance().getReference().child("Studi").child(names).child("valutazioni").child("recensioni");
            mDatabase.keepSynced(true);
            /* Ricarica tutte le opinioni */
            refreshData();
            View rootView = inflater.inflate(R.layout.fragment_opinioni, container, false);
            rv = (RecyclerView) rootView.findViewById(R.id.MyRecView2s);

            Recensione rc = new Recensione();
            rc.setUsername("Luca");
            rc.setCommento("Non male, da app");
            rc.setRating("10");
            rc.setData("oggi");
            //ci vuole il push prima del setvalue
            mDatabase.child(names).setValue(rc);
            rv.setLayoutManager(new LinearLayoutManager(getActivity()));

            return rootView;
        }
        else
        {
            View rootView = inflater.inflate(R.layout.fragment_maps, container, false);
            SupportMapFragment mapFragment = SupportMapFragment.newInstance();
            getChildFragmentManager().beginTransaction().replace(R.id.map , mapFragment).commit();
            mapFragment.getMapAsync(this);


            if (mapFragment == null) {
                getChildFragmentManager().beginTransaction().replace(R.id.map , mapFragment).commit();
                mapFragment.getMapAsync(this);
            }


            return rootView;
        }
    }
    private void getUpdates(DataSnapshot dataSnapshot){

        recensioni.clear();

        for (DataSnapshot ds : dataSnapshot.getChildren()){
            Recensione s=new Recensione();
            s.setUsername(ds.getValue(Recensione.class).getUsername());
            s.setCommento(ds.getValue(Recensione.class).getCommento());
            s.setRating(ds.getValue(Recensione.class).getRating());
            s.setData(ds.getValue(Recensione.class).getData());
            recensioni.add(s);
        }

        if(recensioni.size()>0){
            adapter=new MyCommentsAdapter(getActivity(), recensioni);
            rv.setAdapter(adapter);
        }else {
            Toast.makeText(getActivity(),"NON CI SONO ANCORA OPINIONI.", Toast.LENGTH_LONG).show();

        }
    }
    //RETRIEVE
    private void refreshData(){

        mDatabase.addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                getUpdates(dataSnapshot);
            }

            @Override
            public void onChildChanged(DataSnapshot dataSnapshot, String s) {
                getUpdates(dataSnapshot);
            }

            @Override
            public void onChildRemoved(DataSnapshot dataSnapshot) {

            }

            @Override
            public void onChildMoved(DataSnapshot dataSnapshot, String s) {

            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });

    }

    @Override
    public void onMapReady(GoogleMap googleMap) {
        googleMapa = googleMap;
        Intent intent = getActivity().getIntent();

        final String names = intent.getStringExtra("Nome");

        String posizione1 = intent.getStringExtra("Posizione1");
        String posizione2 = intent.getStringExtra("Posizione2");

        try
        {
            //Toast.makeText(MapsActivity.this,posizione1 + " " + posizione2 , Toast.LENGTH_LONG).show();   //not a double
            Double protein = Double.parseDouble(posizione1);
            Double protein2 = Double.parseDouble(posizione2);
             LatLng sydney = new LatLng(protein,protein2);                                                                           //custom icon in drawable
            googleMap.addMarker(new MarkerOptions().position(sydney).title(names)/*.icon(BitmapDescriptorFactory.fromResource(R.drawable.cast_abc_scrubber_control_off_mtrl_alpha))*/);
            googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(sydney, 12.0f));

        }
        catch(NumberFormatException e)
        {
            //  Toast.makeText(DisplayStudio.this, e.toString() , Toast.LENGTH_LONG).show();   //not a double
        }



    }
}

/**
 * A {@link FragmentPagerAdapter} that returns a fragment corresponding to
 * one of the sections/tabs/pages.
 */
public class SectionsPagerAdapter extends FragmentPagerAdapter {

    public SectionsPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        // getItem is called to instantiate the fragment for the given page.
        // Return a PlaceholderFragment (defined as a static inner class below).
        return DisplayStudio.PlaceholderFragment.newInstance(position + 1);
    }

    @Override
    public int getCount() {
        // Show 3 total pages.
        return 3;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        switch (position) {
            case 0:
                return "PROFILO";
            case 1:
                return "OPINIONI";
            case 2:
                return "MAPS";
        }
        return null;
    }
}}
private void getUpdates(DataSnapshot dataSnapshot){
    recensioni.clear();
    for (DataSnapshot ds : dataSnapshot.getChildren()){
        Recensione s=new Recensione();
        s.setUsername(ds.getValue(String.class));
        s.setCommento(ds.getValue(String.class));
        s.setRating(ds.getValue(String.class));
        s.setData(ds.getValue(String.class));
        recensioni.add(s);
    }

    if(recensioni.size()>0){
        adapter=new MyCommentsAdapter(getActivity(), recensioni);
        rv.setAdapter(adapter);
    }else {
        Toast.makeText(getActivity(),"NON CI SONO ANCORA OPINIONI.", Toast.LENGTH_LONG).show();
    }
}