代码之家  ›  专栏  ›  技术社区  ›  phwt

FireBaseUI-不兼容的类型:字符串无法转换为DatabaseReference

  •  0
  • phwt  · 技术社区  · 8 年前

    我得到了 不兼容的类型:字符串不能转换为databasereference error in oniteclick for getting firebase database key.

    我用于从FireBase数据库填充ListView的代码

    mlistview=(listview)rootview.findviewbyid(r.id.listview1);
    databasereference databasereference=firebasedatabase.getinstance().getreferencefromurl(“https://my project.firebaseio.com/name/data”);
    firebaseListAdapter<personnel>adapter=new firebaseListAdapter<personnel>(getactivity(),personnel.class,r.layout.layout_items,databasereference){
    @覆盖
    保护无效填充视图(视图V,人员模型,内部位置){
    textView textView=(textView)v.findView byid(r.id.tv_title);
    textview.settext(model.name);
    }
    }(二)
    mlistview.setadapter(适配器);
    

    OniEmclick for the listView(modified fromthis)

    mlistview.setOnitEmclickListener(new adapterview.OnitEmclickListener()。{
    @覆盖
    public void OnItemClick(adapterView<?>adapterview,视图视图,int位置,long id){
    databasereference itemref=adapter.getItem(位置);
    toast toast=toast.maketext(getActivity().getApplicationContext(),itemRef.getKey(),toast.length_short);
    toast.show();
    }
    })(二)
    
    
    

    首先,我从内部类中访问变量“adapter”,需要声明为finalerror onadapterinadapter.getitem(position);underoniteclick

    因此,我添加了finalatfinal firebaseListadapter<personnel>adapter…then this error come up

    我尝试将adapter声明为global,但仍然出现相同的错误。请告诉我怎么修这个。谢谢!

    我用来从FireBase数据库填充ListView的代码

    mListView = (ListView) rootView.findViewById(R.id.listview1);
    DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReferenceFromUrl("https://my-project.firebaseio.com/name/data");
    FirebaseListAdapter<Personnel> adapter = new FirebaseListAdapter<Personnel>(getActivity(),Personnel.class,R.layout.layout_items,databaseReference) {
        @Override
        protected void populateView(View v, Personnel model, int position) {
            TextView textView = (TextView) v.findViewById(R.id.tv_title);
            textView.setText(model.name);
        }
    };
    mListView.setAdapter(adapter);
    

    单击以查看列表视图(修改自this)

    mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
            DatabaseReference itemRef = adapter.getItem(position);
            Toast toast = Toast.makeText(getActivity().getApplicationContext(), itemRef.getKey(), Toast.LENGTH_SHORT);
            toast.show();
        }
    });
    

    首先我得到Variable 'adapter' is accessed from within inner class, needs to be declared final上的错误adapter在里面adapter.getItem(position);在下面单击 here

    所以我补充说finalfinal FirebaseListAdapter<Personnel> adapter...然后出现这个错误 here

    我试过声明适配器虽然是全局的,但仍然有相同的错误。请告诉我怎么修这个。谢谢!

    1 回复  |  直到 8 年前
        1
  •  1
  •   Peter Haddad    8 年前

    更改此:

     DatabaseReference itemRef = adapter.getItem(position);
    

    在这方面:

    Personnel itemRef = adapter.getItem(position);
    
    推荐文章