Проблема отображения Android RecyclerView в адаптере - PullRequest
0 голосов
/ 14 декабря 2018

Это мой код.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_all_user);
    // getting id
    UserList=findViewById(R.id.ChatUserRecycle);
    toolbar=findViewById(R.id.mainPageBar);

    databaseReference=FirebaseDatabase.getInstance().getReference().child("Student");

    setSupportActionBar(toolbar);
    getSupportActionBar().setTitle("Users");  //setting action bar title
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    UserList.setHasFixedSize(true);
    UserList.setLayoutManager(new LinearLayoutManager(this));
}

@Override
protected void onStart() {
    super.onStart();
    FirebaseRecyclerOptions<ChatUsers> options=
            new FirebaseRecyclerOptions.Builder<ChatUsers>()
                    .setQuery(databaseReference,ChatUsers.class)
                    .setLifecycleOwner(this)
                    .build();

    firebaseRecyclerAdapter=new FirebaseRecyclerAdapter<ChatUsers,UsersViewHolder>(options) {

        @NonNull
        @Override
        public UsersViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            return new UsersViewHolder(LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.user_layout, parent, false));

        }
        @Override
        protected void onBindViewHolder(@NonNull UsersViewHolder holder, int position, @NonNull ChatUsers model) {
            holder.setName(model.getName());
        }
    };
    UserList.setAdapter(firebaseRecyclerAdapter);

}
public static class UsersViewHolder extends RecyclerView.ViewHolder{
    View mview;

    public UsersViewHolder(@NonNull View itemView) {
        super(itemView);
        mview=itemView;
    }
    public void setName(String name){
        Toast.makeText(itemView.getContext(),"2",Toast.LENGTH_SHORT).show();
        TextView name1=(TextView)mview.findViewById(R.id.SingleUsername);
        name1.setText(name);
    }
}
}

Когда я запускаю свой код, ничего не отображается, только пустой макет без повторного просмотра и макет, который я хочу надуть.И через несколько секунд приложение.

FirebaseRecyclerAdapter<image_details, BlogViewHolder> adapter = new FirebaseRecyclerAdapter<image_details, BlogViewHolder>(
            image_details.class,
            R.layout.individual_row,

            myRef) {
        @Override
        protected void onBindViewHolder(BlogViewHolder holder, int position, image_details model) {
            holder.setDate(model.getDate());
            holder.setUrl(model.getUrl());
        }

        @Override
        public BlogViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            return null;
        }
    };

Сначала я использую этот метод, но он также не работает.

1 Ответ

0 голосов
/ 15 декабря 2018

Когда я запускаю свой код, ничего не отображается, только пустой макет

Это потому, что вы вообще не создаете представление для своего владельца.Чтобы решить эту проблему, добавьте следующие строки кода:

View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.individual_row, parent, false);
return new BlogViewHolder(view);

Внутри метода onCreateViewHolder() и удалите return null;.

...