2017-05-08 36 views
0

我有实时数据库中的数据,我试图在具有回收器视图的片段中显示该数据。但数据没有填充。即使populateView方法不触发(我试图记录它)。它在活动中加载得很好,但不在片段中。谁能帮忙?片段firebaserecycler适配器不工作片段

public class ExtraFragment extends Fragment { 
    RecyclerView recyclerView; 
    TextView clickLink; 
    DatabaseReference databaseReference; 
    FirebaseRecyclerAdapter<ExtraBeans,MyViewHolder> recyclerAdapter; 

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




     View v = inflater.inflate(R.layout.fragment_extra, null, false); 
     recyclerView = (RecyclerView) v.findViewById(R.id.recyclerView); 




     clickLink = (TextView) v.findViewById(R.id.clickLink); 
     databaseReference = FirebaseDatabase.getInstance().getReferenceFromUrl("https://myeg-7g8990.firebaseio.com/sim/my data"); 
     Log.v("adslquestion","mhere"+""); 





       recyclerAdapter= new FirebaseRecyclerAdapter<ExtraBeans,MyViewHolder> 

         (ExtraBeans.class, 
         R.layout.options_extra, 
         MyViewHolder.class, 
         databaseReference) { 

      @Override 
      protected void populateViewHolder(MyViewHolder viewHolder, ExtraBeans model, int position) { 


       viewHolder.setQuestion(model.getQuestion()); 
       viewHolder.setAnswer(model.getAnswer()); 
       viewHolder.setWinner(model.getWinner()); 
       Log.v("adslquestion",model.getQuestion()+""); 


      } 




     }; 
     recyclerView.setAdapter(recyclerAdapter); 
    recyclerAdapter.notifyDataSetChanged(); 
     databaseReference.keepSynced(true); 
        } 
       } 
     ); 


     return v; 
    } 


    public static class MyViewHolder extends RecyclerView.ViewHolder{ 
     TextView question; 
     TextView answer; 
     TextView winner; 
     View mView; 

     public MyViewHolder(View itemView) { 

      super(itemView); 
      mView=itemView; 

      Log.v("adslquestion","aarko ma"); 
     } 

     public void setQuestion(String questionString) 
     { 
      question=(TextView)mView.findViewById(R.id.question); 
      question.setText(questionString); 



     } 
     public void setAnswer(String answerString) 
     { 
      answer=(TextView)mView.findViewById(R.id.answer); 
      answer.setText(answerString); 




     } 

     public void setWinner(String winnerString) 
     { 
      winner=(TextView)mView.findViewById(R.id.winner); 
      winner.setText(winnerString); 



     } 
    } 
+0

发布你的数据库结构 –

回答

1

我建议您使用活动而不是片段。我间接与Firebase开发团队联系,发现在使用垃圾站碎片回收站适配器时存在一些错误。如果你强迫你想要使用片段,那么可能是我有你的东西。使用列表视图,我已经修改了代码

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

    View v = inflater.inflate(R.layout.fragment_extra, null, false); 
    listView = (ListView) v.findViewById(R.id.listView); 

    clickLink = (TextView) v.findViewById(R.id.clickLink); 
    databaseReference = FirebaseDatabase.getInstance().getReferenceFromUrl("https://data-your.value.com/etc"); 

    listAdapter = new FirebaseListAdapter<ExtraBeans>(getActivity(), ExtraBeans.class, R.layout.options_extra, databaseReference) { 
     TextView question; 
     TextView answer; 
     TextView winner; 
     TextView detail; 

     @Override 
     protected void populateView(View v, ExtraBeans model, int position) 
     { 
      answer = (TextView) v.findViewById(R.id.answer); 
      question = (TextView) v.findViewById(R.id.question); 
      winner = (TextView) v.findViewById(R.id.winner); 
      detail = (TextView) v.findViewById(R.id.detail); 

      question.setText(model.getQuestion()); 
      answer.setText(model.getAnswer()); 
      winner.setText("Winner- " + model.getWinner()); 
      detail.setText(model.getDetail()); 
     } 
    }; 
    listView.setAdapter(listAdapter); 
    listAdapter.notifyDataSetChanged(); 
    databaseReference.keepSynced(true); 

    return v; 
} 

你甚至可以自己创建视图保持器来平滑滚动。 让我知道,如果这段代码可以帮助你。

+0

thanx工作,但它的坏,我也得到了谷歌开发人员的答复,在使用碎片时,在firebase中的回收站适配器有问题。 –