실시간 데이터베이스에 데이터가 있고 리사이클 러 뷰가있는 조각으로 해당 데이터를 표시하려고합니다. 그러나 데이터는 채워지지 않습니다. populateView 메서드조차도 트리거되지 않았습니다 (기록을 시도했습니다). 활동에서는 잘로드되지만 조각에서는로드되지 않습니다. 누구든지 도울 수 있습니까?
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에 recycler 어댑터를 사용하는 데 몇 가지 오류가 있음을 발견했습니다. 프래그먼트를 사용하고 싶다고 강요한다면 내가 당신을 위해 뭔가를 가질 수 있습니다. 목록보기를 사용하고 코드를 수정했습니다.
@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;
}
부드러운 스크롤을 위해 뷰 홀더를 직접 만들 수도 있습니다. 이 코드가 도움이되는지 알려주세요.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다