Все horoszantal Nested Recyclerviews в вертикальной программе повторного просмотра показывают один и тот же список
Я постараюсь объяснить свою проблему настолько четко, насколько смогу. Я пытаюсь реализовать представление вложенного рециркулятора, например, Google Play Store. Таким образом, у меня есть вертикальное представление Recycler, и оно состоит из горизонтального просмотра Recycler в детстве. Теперь я получаю данные от JSON, как показано ниже
{"-L1vUj7wCeLGW7Cg2-Id":{"message":"http://xxxx/xxxx.json\n", "type":0},
"-L1vgsZgayNyCZXfbeh7":{"message":"http://xxxx/xxxx.json\n","type":0},
"-L1vgwTKi8GeTSMm326s":{"message":"http://xxxx.json\n","type":0}}
поэтому для каждого ключа "сообщения" будет горизонтальное представление о переработчике, и каждый json отличается от других. Но то, что я получаю, - это то, что каждое горизонтальное представление о переработчике имеет все ссылки на данные JSON. Например, утилита 1st horz должна содержать только те данные, которые находятся в первом ключе сообщения, но она также показывает данные, которые находятся в других ключах сообщения. Ниже мой код, кто-то может сказать мне, где я делаю неправильно?
filterlink - это значение ключа сообщения.
private void attachMessagesToRecyclerView(final Query messagesReference) {
mAdapter = new FirebaseRecyclerAdapter<Message, MessageItemHolder>(Message.class,
R.layout.test123, MessageItemHolder.class, messagesReference) {
@Override
public MessageItemHolder onCreateViewHolder(ViewGroup parent, int viewType) {
Test123Binding adapterItemMessageBinding = DataBindingUtil.inflate(LayoutInflater
.from(parent.getContext()), viewType, parent, false);
return new MessageItemHolder(adapterItemMessageBinding);
}
@Override
protected void populateViewHolder(final MessageItemHolder viewHolder, final Message message, int position) {
int index = mUsersEmails.indexOf(message.getEmail());
if (index != -1) {
viewHolder.bindMessage(mUsers.get(index), message, MessagesFragment.this);
}
String http = message.getMessage();
if (http.contains("google") && message.getType() == 0){
viewHolder.mAdapterItemMessageBinding.tvItemMessage1.setVisibility(View.GONE);
filterLink = message.getMessage();
// ListOfdataAdapter.clear();
JSON_HTTP_CALL(filterLink, viewHolder);
}
}
};
mFragmentMessagesBinding.rvMessage.setAdapter(mAdapter);
mFragmentMessagesBinding.rvMessage.getAdapter().registerAdapterDataObserver(
new RecyclerView.AdapterDataObserver() {
@Override public void onItemRangeInserted(int position, int itemCount) {
super.onItemRangeInserted(position, itemCount);
mFragmentMessagesBinding.rvMessage.scrollToPosition(position);
}
});
}
public void shownestedRecyclerView(MessageItemHolder viewHolder){
viewHolder.mAdapterItemMessageBinding.nestedRecyclerview.setVisibility(View.VISIBLE);
final WrapContentLinearLayoutManager linearLayoutManager = new WrapContentLinearLayoutManager(getActivity());
linearLayoutManager.setOrientation(WrapContentLinearLayoutManager.HORIZONTAL);
viewHolder.mAdapterItemMessageBinding.nestedRecyclerview.setLayoutManager(linearLayoutManager);
viewHolder.mAdapterItemMessageBinding.nestedRecyclerview.setHasFixedSize(true);
//mFragmentMessagesBinding.recyclerview1.addItemDecoration(new PaddingItemDecoration(size));
viewHolder.mAdapterItemMessageBinding.nestedRecyclerview.setItemAnimator(new DefaultItemAnimator());
DialogRecyclerViewAdapter rvAdapter = new DialogRecyclerViewAdapter(ListOfdataAdapter, getActivity());
viewHolder.mAdapterItemMessageBinding.nestedRecyclerview.setAdapter(rvAdapter);
rvAdapter.notifyDataSetChanged();
}
public void JSON_HTTP_CALL(final String url, final MessageItemHolder viewHolder){
RequestOfJSonArray = new JsonArrayRequest(url,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
ParsingLogs(encodedMail, dateandTime, url, "Success");
ParseJSonResponse(response, viewHolder);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
ParsingLogs(encodedMail, dateandTime, url, String.valueOf(error));
}
});
requestQueue = Volley.newRequestQueue(getActivity());
requestQueue.add(RequestOfJSonArray);
}
public void ParseJSonResponse(JSONArray array, MessageItemHolder viewHolder){
for(int i = 0; i<array.length(); i++) {
UploadImage GetDataAdapter2 = new UploadImage();
JSONObject json = null;
try {
json = array.getJSONObject(i);
GetDataAdapter2.setBrand_name(json.getString(Image_Name_JSON));
// Adding image title name in array to display on RecyclerView click event.
ImageTitleNameArrayListForClick.add(json.getString(Image_Name_JSON));
} catch (JSONException e) {
e.printStackTrace();
}
ListOfdataAdapter.add(GetDataAdapter2);
shownestedRecyclerView(viewHolder);
// showFragment();
}
}