Je fais un gridview pour afficher la liste des icônes (image & text) en lisant les données de la base de données Firebase, en appelant cette activité pour la première fois l'affichage gridview. Ce n'est qu'après avoir changé l'orientation que les données sont chargées. .Android: Les données Gridview personnalisées ne sont pas obligatoires au premier instant
S'il vous plaît indiquerons comment puis-je faire afficher à la première fois (ce qui est la première fois que le développement de l'application Android et ne code Java avant) Merci
Ci-dessous mon code:
package com.abc.expensestracker;
import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.AdapterView; import android.widget.GridView; import com.google.firebase.database.DataSnapshot; import com.google.firebase.database.DatabaseError; import com.google.firebase.database.DatabaseReference; import com.google.firebase.database.FirebaseDatabase; import com.google.firebase.database.ValueEventListener; import java.util.ArrayList; public class NewCategoryIconListActivity extends AppCompatActivity { private GridView mIconListGridView; private IconsListGridViewAdapter mIconListGridViewAdapter; public ArrayList<IconsImageGridItemData> mIconsImageArrData = null; private DatabaseReference mIconImagesRef; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_new_category_icon_list); mIconListGridView = (GridView) findViewById(R.id.icons_list_gridview); mIconImagesRef = FirebaseDatabase.getInstance().getReference().child("Iconimages"); mIconsImageArrData = new ArrayList<IconsImageGridItemData>(); setListData(); mIconListGridViewAdapter = new IconsListGridViewAdapter(this,R.layout.icons_single_item_layout,mIconsImageArrData);//(this, R.layout.icons_single_item_layout, mGridData); mIconListGridView.setAdapter(mIconListGridViewAdapter); mIconListGridViewAdapter.setGridData(mIconsImageArrData); mIconListGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //Get item at position IconsImageGridItemData item = (IconsImageGridItemData) parent.getItemAtPosition(position); String selectedIconURL = item.getIconURL(); //send back the selected icon to parent activity Intent returnIntent = getIntent(); returnIntent.putExtra("icon_URL",selectedIconURL); setResult(Activity.RESULT_OK,returnIntent); finish(); } }); } /****** Function to set data in ArrayList *************/ public void setListData() { mIconImagesRef.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { for(DataSnapshot categorySnapshot: dataSnapshot.getChildren()){ String iconURL = categorySnapshot.child("iconURL").getValue(String.class); final IconsImageGridItemData iconsImageData = new IconsImageGridItemData(); /******* Firstly take data in model object ******/ iconsImageData.setIconURL(iconURL); /******** Take Model Object in ArrayList **********/ mIconsImageArrData.add(iconsImageData); } } @Override public void onCancelled(DatabaseError databaseError) { } }); } }
Merci, cela résout mon problème. J'espère pouvoir appliquer cette même méthode en liant Custom RecyclerView que j'ai rencontré le même problème. – user1397859
Oui, cela fonctionnera car l'adaptateur est utilisé pour mettre à jour les données dans la vue liste/Recycleur. Seul '' notifyDataSetChanged() ''est appelé après avoir des données disponibles dans votre Array/ArrayList ou n'importe quel type de collection de données. Codage heureux! –