在对象上使用带有ParseQuery的Viewpager显示recyclerView

时间:2019-04-01 20:38:35

标签: android parse-platform android-recyclerview android-viewpager adapter

您好,我正在尝试执行显示为片段的viewPager。这两个片段都包含一个recyclerView。我试图找到我的片段什么都没显示的原因。我试图做一个聊天应用程序,所以我想在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!

请让我知道代码有什么问题,谢谢!

0 个答案:

没有答案