Я создаю приложение для обоев и пытаюсь создать раздел категории с текстом категории поверх обоев, представляющих категорию (например, Текст - природа, картинка - лес). Проблема в том, что когда я играю в приложение, ничего не появляется, но ошибок также нет, все должно работать нормально, но это не так.
Все правила Firebase установлены.
Я предоставил доступ к Интернету для приложения.
Зависимость:
dependencies {
implementation 'com.squareup.picasso:picasso:2.71828'
implementation 'com.firebaseui:firebase-ui-database:3.+'
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:recyclerview-v7:28.0.0'
implementation 'com.android.support:cardview-v7:28.0.0'
implementation 'com.android.support:design:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.support:design:28.0.0'
implementation 'com.android.support:support-v4:28.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'com.google.firebase:firebase-database:16.0.1'
implementation 'com.google.firebase:firebase-core:16.0.5'
}
Класс фрагмента категории:
public class CategoryFragment extends Fragment {
//Firebase
FirebaseDatabase database;
DatabaseReference categoryBackground;
//FirebaseUI adapteris
FirebaseRecyclerOptions<CategoryItem> options;
FirebaseRecyclerAdapter<CategoryItem, CategoryViewHolder> adapter;
//view
RecyclerView recyclerView;
private static CategoryFragment INSTANCE = null;
public CategoryFragment() {
// Required empty public constructor
database = FirebaseDatabase.getInstance();
categoryBackground = database.getReference(Common.STR_CATEGORY_BACKGROUND);
options = new FirebaseRecyclerOptions.Builder<CategoryItem>()
.setQuery(categoryBackground,CategoryItem.class)
.build();
adapter = new FirebaseRecyclerAdapter<CategoryItem, CategoryViewHolder>(options) {
@Override
protected void onBindViewHolder(@NonNull final CategoryViewHolder holder, int position, @NonNull final CategoryItem model) {
Picasso.get()
.load(model.getImageLink())
.networkPolicy(NetworkPolicy.OFFLINE)
.into(holder.background_image, new Callback() {
@Override
public void onSuccess() {
}
@Override
public void onError(Exception e) {
//Bandyti dar karta online jeigu nepavyksta
Picasso.get()
.load(model.getImageLink())
.error(R.drawable.ic_error_black_24dp)
.into(holder.background_image, new Callback() {
@Override
public void onSuccess() {
}
@Override
public void onError(Exception e) {
Log.e("ERROR_", "Couldn't fetch image");
}
});
}
});
holder.category_name.setText(model.getName());
holder.setItemClickListener(new ItemClickListener() {
@Override
public void onClick(View view, int position) {
}
});
}
@Override
public CategoryViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.layout_category_item, parent, false);
return new CategoryViewHolder(itemView);
}
};
}
public static CategoryFragment getInstance()
{
if(INSTANCE == null)
INSTANCE = new CategoryFragment();
return INSTANCE;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_category, container, false);
recyclerView = (RecyclerView)view.findViewById(R.id.recycler_category);
recyclerView.setHasFixedSize(true);
GridLayoutManager gridLayoutManager = new GridLayoutManager(getActivity(),2);
recyclerView.setLayoutManager((gridLayoutManager));
setCategory();
return view;
}
private void setCategory() {
adapter.startListening();
recyclerView.setAdapter(adapter);
}
@Override
public void onStart() {
super.onStart();
if(adapter != null)
adapter.startListening();
}
@Override
public void onStop() {
if(adapter != null)
adapter.stopListening();
super.onStop();
}
@Override
public void onResume() {
super.onResume();
if(adapter != null)
adapter.startListening();
}
}