Отображение recyclerView с помощью Viewpager с помощью ParseQuery для объекта - PullRequest
0 голосов
/ 01 апреля 2019

Здравствуйте, я пытаюсь сделать viewPager, который отображает фрагменты. Оба фрагмента содержат программу recyclerView. Я пытаюсь найти причину, по которой мой фрагмент ничего не показывает. Я пытаюсь создать приложение для чата. Так что я хочу отобразить в каждой позиции утилиты восстановленияПросмотреть изображение пользователя, имя и другие поля. .

Это мой Viewpager ...

public class ChatPagerAdapter extends FragmentPagerAdapter {

int numberOfTabs;
    public ChatPagerAdapter(FragmentManager fm, int NumOfTabs) {
        super(fm);
        this.numberOfTabs = NumOfTabs;
    }

    @Override
    public Fragment getItem(int position) {
        switch (position) {
            case 0:
                ChatConUsuarioFragment tab1 = new ChatConUsuarioFragment();
                return tab1;
            case 1:
                ChatCorporativoFragment tab2 = new ChatCorporativoFragment();
                return tab2;

            default:
                return null;
        }
    }

    @Override
    public int getCount() {
        return numberOfTabs;
    }

}

Это ChatConUsuarioFragment ..

public class ChatConUsuarioFragment extends Fragment {

private String title;
private int page;
String nombre;
RecyclerView recyclerViewChatUsuario;
List<ParseObject> listaDeChatsConUsuario;
ParseFile imagenRecibeMensaje;


public ChatConUsuarioFragment() {
    // Required empty public constructor
}


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

    View view=inflater.inflate(R.layout.fragment_chat_con_usuario, container, false);


    queryChatClass();

    recyclerViewChatUsuario=(RecyclerView)view.findViewById(R.id.recycler_chat_usuario);

    listaDeChatsConUsuario=new ArrayList<>();


    recyclerViewChatUsuario.addItemDecoration(new DividerItemDecoration(getContext(),
            LinearLayoutManager.VERTICAL));


    // Inflate the layout for this fragment
    return view;
}

private void queryChatClass(){
    ParseQuery<ParseObject> query=ParseQuery.getQuery("Chat");
    query.findInBackground(new FindCallback<ParseObject>() {
        @Override
        public void done(List<ParseObject> objects, ParseException e) {
            for (ParseObject obj:objects
                 ) {
                 nombre=obj.getString("NombreRecibeMensaje");


                listaDeChatsConUsuario.add(obj);

                ListasChatAdapter adapter= new ListasChatAdapter(getContext(),listaDeChatsConUsuario);
                recyclerViewChatUsuario.setAdapter(adapter);
                adapter.notifyDataSetChanged();

            }
        }
    });
}

}

Это код для адаптера ...

public class ListasChatAdapter extends RecyclerView.Adapter<ListasChatAdapter.ViewHolder> {


Context context;
List<ParseObject> listaDeChatsUsuario;

public ListasChatAdapter(Context context, List<ParseObject> listaDeChatsUsuario) {
    this.context = context;
    this.listaDeChatsUsuario = listaDeChatsUsuario;
}


@NonNull
@Override
public ListasChatAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_chat, null);
    return new ViewHolder(view);
}

public void setParseChatList(List<ParseObject> parseChatList) {
    this.listaDeChatsUsuario = parseChatList;
}

@Override
public void onBindViewHolder(@NonNull final ListasChatAdapter.ViewHolder viewHolder, int position) {
    ParseObject item = listaDeChatsUsuario.get(position);
    viewHolder.nombreUsuario.setText(item.getString("NombreRecibeMensaje"));
    ParseFile parseFile = item.getParseFile("AvatarRecibeMensaje");
    if (parseFile != null) {
        parseFile.getDataInBackground(new GetDataCallback() {
            @Override
            public void done(byte[] data, ParseException e) {
                if (e == null) {
                    Bitmap bmp = BitmapFactory.decodeByteArray(data, 0, data.length);
                    if (bmp != null) {
                        viewHolder.imagenUsuario.setImageBitmap(bmp);
                    }
                }
            }
        });
    }


}

@Override
public int getItemCount() {


    return this.listaDeChatsUsuario.size();

}

public class ViewHolder extends RecyclerView.ViewHolder {

    CircleImageView imagenUsuario;
    TextView hora;
    TextView nombreUsuario;
    TextView ultimoChat;

    public ViewHolder(@NonNull View itemView) {
        super(itemView);

        imagenUsuario = (CircleImageView) itemView.findViewById(R.id.circleImageView3);
        hora = (TextView) itemView.findViewById(R.id.hora_ultimo_chat);
        nombreUsuario = (TextView) itemView.findViewById(R.id.chat_nombre_empresa);
        ultimoChat = (TextView) itemView.findViewById(R.id.contenido_chat);

    }
}

}

Это фрагмент ViewPager ...

public class ChatCorporativoyUsuarioContenedor extends Fragment {



@BindView(R.id.pager_chat)
ViewPager pagerChat;
Unbinder unbinder;

ChatPagerAdapter adapter;

public ChatCorporativoyUsuarioContenedor() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.fragment_chat_corporativoy_usuario_contenedor, container, false);
    unbinder = ButterKnife.bind(this, view);

    TabLayout tabLayout = (TabLayout) view.findViewById(R.id.chat_tabLayout);
    tabLayout.addTab(tabLayout.newTab().setText("Chat Usuario"));
    tabLayout.addTab(tabLayout.newTab().setText("Chat Corporativo"));
    tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);

    adapter=new ChatPagerAdapter(getFragmentManager(),2);
    pagerChat.setAdapter(adapter);

    return view;
}

@Override
public void onDestroyView() {
    super.onDestroyView();
    unbinder.unbind();
}

}

This is what the parseQuery returns!

Пожалуйста, дайте мне знать, что не так с кодом, спасибо!

...