片段 - Firebaserecycler 适配器无法处理片段



>我在实时数据库中有数据,我正在尝试以具有回收器视图的片段显示该数据。但数据不会填充。甚至填充视图方法也不是triggred(我尝试记录它(。它在活动中加载良好,但在片段中加载不佳。谁能帮忙?

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);

        }
    }

我建议你要么使用活动而不是片段。我间接联系了 firebase 开发人员团队,发现在碎片中使用回收器适配器作为 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;
}

您甚至可以自己创建视图支架以实现平滑滚动。让我知道这段代码是否对您有帮助。

最新更新