У меня просто есть некоторая проблема, когда я хочу получить данные из firebase и загрузить их в GridView, но данные не отображаются, пока я не поверну свой телефон из портретной в альбомную или наоборот:
Это когда я запускаю приложение (данные не отображаются)
Когда я поворачиваю свой телефон, чтобы начать альбомную ориентацию, начинают появляться данные
Наконец, когда я переворачиваю свой телефон в книжную ориентацию, данные успешно загружены
Я попробовал несколько способов выяснить это как (обновить вид сетки gridview.notifyalldatachanged ()), но ни один из них не решил эту проблему.
мой код очень прост: создайте новый пользовательский адаптер и установите его в gridview
public class ReceipesActivity extends AppCompatActivity {
GridView gridView;
ArrayList<String> RecipeImageUrl=new ArrayList<String>();
ArrayList<String> RecipeTitle=new ArrayList<String>();
DatabaseReference mdata;
MyCustomAdapter myCustomAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_receipes);
gridView = (GridView) findViewById(R.id.GridviewID);
mdata = FirebaseDatabase.getInstance().getReference("Categories").child("انواع الخبز");
LoadDataFromFirebase();
myCustomAdapter = new MyCustomAdapter(RecipeImageUrl,RecipeTitle);
gridView.setAdapter(myCustomAdapter);
}
@Override
protected void onStart() {
super.onStart();
}
//My Custom Adapter for GridView
public class MyCustomAdapter extends BaseAdapter {
ArrayList<String> RecipeImageUrl;
ArrayList<String> RecipeTitle;
MyCustomAdapter(ArrayList<String> RecipeImageUrl,ArrayList<String> RecipeTitle) {
Toast.makeText(ReceipesActivity.this, "hey to start", Toast.LENGTH_SHORT).show();
this.RecipeImageUrl = RecipeImageUrl;
this.RecipeTitle = RecipeTitle;
}
@Override
public int getCount() {
return this.RecipeImageUrl.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater layoutInflater = getLayoutInflater();
View view = layoutInflater.inflate(R.layout.grid_view_custom, null);
ImageView imageView = (ImageView) view.findViewById(R.id.GridRecipeImageID);
TextView textView = (TextView) view.findViewById(R.id.GridRecipeTitleID);
Toast.makeText(ReceipesActivity.this, "sdfgsfg" + RecipeTitle.get(position), Toast.LENGTH_SHORT).show();
textView.setText(RecipeTitle.get(position)); Picasso.with(getApplicationContext()).load(RecipeImageUrl.get(position)).into(imageView);
return view;
}
}
public void LoadDataFromFirebase() {
mdata.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot ds : dataSnapshot.getChildren()) {
RecipeTitle.add(ds.child("title").getValue().toString());
RecipeImageUrl.add(ds.child("image").getValue().toString());
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}