Donc, je voulais personnaliser les éléments de ma Listview et j'ai fait un adaptateur personnalisé.Les éléments n'apparaissent pas avec l'adaptateur personnalisé pour ListView
public class elementList extends BaseAdapter {
Context context;
String[] data;
private static LayoutInflater inflater = null;
public elementList(Context context, String[] data) {
this.context = context;
this.data = data;
inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return data.length;
}
@Override
public Object getItem(int position) {
return data[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View vi = convertView;
if(vi == null)
vi = inflater.inflate(R.layout.task, null);
TextView text = (TextView)vi.findViewById(R.id.title);
Log.d("TAG", "DA");
text.setText(data[position]);
return vi;
}
}
Voici mon activité principale
private void showTasks(){
final ArrayList<String> taskList = new ArrayList<String>();
ListView listView = (ListView)findViewById(R.id.listView);
final List<String> tasks = new ArrayList<String>(taskList);
final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, tasks);
final elementList element = new elementList(this, tasks.toArray(new String[0]));
listView.setAdapter(element);
FirebaseAuth mAuth = FirebaseAuth.getInstance();
FirebaseUser user = mAuth.getCurrentUser();
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference adress = database.getReference("users/" + user.getUid() + "/tasksList");
adress.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
try{
if(dataSnapshot.getValue() != null){
Map<String, String> value = (Map<String, String>)dataSnapshot.getValue();
for (Map.Entry<String, String> entry : value.entrySet()){
tasks.add(entry.getValue());
Log.d("VALOARE", entry.getValue());
element.notifyDataSetChanged();
}
}
}
catch (Exception e){
e.printStackTrace();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
Je ne comprends pas pourquoi il ne montre pas ma liste si je me sers de mon adaptateur (élément), mais il fonctionne très bien si je l'utilise arrayadapter.
Dans la première image que je me sers arrayadapter et dans le deuxième élément. Je veux mentionner que cela ne plante pas ou ne donne aucune erreur.
Je trouve le gonfleur de disposition «statique» suspect. Consultez également https://possiblemobile.com/2013/05/layout-inflation-as-intended/ pour savoir comment passer la vue parent à la méthode 'inflate'. – frozenkoi
Le tableau sauvegardant votre 'elementList'' Adapter' n'est jamais changé/mis à jour. Vous faites une copie de tableau de 'lists'' List' une fois quand il est vide, mais ne modifiez jamais le tableau après cela. Mettre à jour que 'List' ne va rien faire pour ce tableau. Pourquoi ne pas faire votre 'Adapter' personnalisé prendre une' List' à la place, de sorte que vous pouvez le mettre à jour de la même manière que vous êtes le 'ArrayAdapter'? –
Partagez votre fichier task.xml –