我加載通過以下方法基於火力地堡數據recyclerview:RecyclerView上覆制返回按
@Override
public void onStart() {
super.onStart();
mChildEventListener = new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
String newPollEpoch = dataSnapshot.getKey();
if (mNewPollsAray.contains(newPollEpoch)) {
Log.v("POLL_ADDED", "POLL ADDED: " + newPollEpoch);
} else {
Log.v("Child_Added", "The new child is " + newPollEpoch);
String newPollImageURL = dataSnapshot.child(IMAGE_URL).getValue(String.class);
//TODO: On additional devices, numbesr are not appearing as the question
String newPollQuestion = dataSnapshot.child(QUESTION_STRING).getValue(String.class);
String convertedQuestion = newPollQuestion.toString();
mNewPollsAray.add(0, new Poll(convertedQuestion, newPollImageURL, newPollEpoch));
mNewPollsAdapter.notifyDataSetChanged();
Log.v("OnChildChanged", "OnCHILDCHANGEDCALLED " + dataSnapshot.getKey());
}
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
};
mPollsRef.addChildEventListener(mChildEventListener);
}
@Override
public void onStop() {
super.onStop();
mPollsRef.removeEventListener(mChildEventListener);
}
這裏是我打電話單擊在recyclerview項目時的方法:
@Override
public void onClick(View view) {
view.getId();
int itemPosition = getAdapterPosition();
String passEpoch = mNewPollsAray.get(itemPosition).getPollID();
Log.v("PASSED_ID", "The passed ID is " + passEpoch);
Intent toPoll = new Intent(getActivity(), PollHostActivity.class);
toPoll.putExtra("POLL_ID", passEpoch);
startActivity(toPoll);
}
我從它加載的片段是TabLayout的一部分。當我在標籤之間導航時,recyclerview正確加載。
但是,當我點擊recyclerview中的項目(這會將我帶到新活動中),然後導航回包含recyclerview的片段時,項目會被重複並且recyclerview項目全部無序。我認爲這與onStart()被多次調用並且基本上將新項目「堆疊」到回收站視圖而不是替換它們相關,但是我希望能夠確認。
你能在片段onCreateView()函數張貼代碼。 – Swapnil