Видел подобные вопросы, не нашёл ответа на свой. Либо смотрю не туда. Проблема сама очень простая - приложение грузит данные и после этого должно отобразить из в списке RecyclerView. При этом, не отображается ничего. Ошибок никаких, просто завершаются все процессы и тишина. До этого использовал ListView на тех же данных, всё отображалось. Код Адаптера:
package com.artemonre.biblio;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.ArrayList;
import static com.artemonre.biblio.PlayerActivity.LOG_TAG;
public class NewBiblioAdapter extends RecyclerView.Adapter
<NewBiblioAdapter.ViewHolder> {
ArrayList <Book> books;
public static class ViewHolder extends RecyclerView.ViewHolder {
TextView name;
TextView author;
TextView length;
ImageView icon;
ImageView bookType;
ImageView bookFace;
public ViewHolder (View view) {
super (view);
Log.d (LOG_TAG, "ViewHolder create");
this.name = view.findViewById (R.id.name);
this.author = view.findViewById (R.id.author);
this.length = view.findViewById (R.id.length);
this.icon = view.findViewById (R.id.icon);
this.bookType = view.findViewById (R.id.bookType);
}
}
public NewBiblioAdapter (ArrayList <Book> books) {
this.books = books;
Log.d (LOG_TAG, "Adapter create");
Log.d (LOG_TAG, "book 1 = " + books.get (0));
}
@Override
public NewBiblioAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
Log.d (LOG_TAG, "adapter OnCreate viewHolder");
View v = LayoutInflater.from (parent.getContext()).inflate(R.layout.list_item, parent, false);
ViewHolder vh = new ViewHolder (v);
return vh;
}
@Override
public void onBindViewHolder(NewBiblioAdapter.ViewHolder holder, int position) {
Log.d (LOG_TAG, "bind viewHolder");
holder.name.setText (books.get (position).getName());
holder.author.setText (books.get (position).getAuthor());
if (books.get (position) instanceof AudioBook) {
holder.icon.setBackgroundResource (R.drawable.iconaudio);
holder.bookType.setBackgroundResource (R.drawable.typeaudio);
holder.length.setText (books.get (position).getLength() + " минут");
}
else {
holder.icon.setBackgroundResource (R.drawable.icontext);
holder.bookType.setBackgroundResource (R.drawable.typetext);
holder.length.setText (books.get (position).getLength() + " страниц");
}
}
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
super.onAttachedToRecyclerView(recyclerView);
}
@Override
public int getItemCount() {
return 0;
}
}
Это код инициализации Вью и присвоения адаптера: Поля
private RecyclerView recyclerView;
private NewBiblioAdapter adapter;
private RecyclerView.LayoutManager layoutManager;
{...
recyclerView = findViewById (R.id.recyclerView);
layoutManager = new LinearLayoutManager (ListActivity.this);
recyclerView.setLayoutManager (layoutManager);
adapter = new NewBiblioAdapter ((ArrayList<Book>) books);
recyclerView.setAdapter (adapter);
...}
Перед этим данные получаю в АсинкТаск, присвоение адаптера происходит в onPostExecute. Заранее благодарен за любую помощь.
Метод в NewBiblioAdapter:
@Override
public int getItemCount() {
return books.size();
}
Данный метод должен возвращать размер листа, который ты вкладываешь в адаптер... Если будет 0 ничего не будет рисоваться.
Кто знает, почему на одних телефонах едет верстка, а на других нет? Причем в инспекторе 320-1920 все нормально выглядитНапишу ссылку на всякий...
Не понимаю, как заменить один знак другим в массивеДля примера: имеем объект, который путем перебора выводится как массив, например:
Как сделать чтобы при перемещении объекта по холсту canvas, он всегда находился по центру и камера за ним "следила"?