2017-10-16 2 views
1

Je veux continuer à regarder mon article au même endroit, quand j'ajoute un nouvel article à la liste de l'article, que puis-je faire?comment puis-je conserver dans mon élément listView lorsque j'ajoute un nouvel élément?

J'utilise firebase pour cela mais ce n'est pas le problème.

Ici, l'élément que je veux voir

here, the item that i want to see

ici, le nouvel élément qui me fait descendre

here, the new item that sends me down

// ainsi ajouter mes articles de la MainClass

if (o instanceof Post) { 
     posts.add((Post) o); 
     listaFeed.notifyDataSetChanged(); 
    } 




public class ListaFeed extends BaseAdapter { 

private ArrayList<Post> posts; 
private Context context; 

public ListaFeed(ArrayList<Post> posts, Context context) { 
    this.posts = posts; 
    this.context = context; 
} 

@Override 
public int getCount() { 

    return posts.size(); 
} 

@Override 
public Object getItem(int position) { 


    return posts.get(position-getCount()-1); 
} 

@Override 
public long getItemId(int position) { 
    return 0; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) 

{ 
    if (convertView==null){ 
     convertView = LayoutInflater.from(this.context).inflate(R.layout.card_feed, null);} 

    Post post = (Post) getItem(position); 
    ImageView foto = convertView.findViewById(R.id.iv_foto); 
    TextView titulo = convertView.findViewById(R.id.tv_titulo); 
    TextView autor = convertView.findViewById(R.id.tv_autor); 
    TextView modo = convertView.findViewById(R.id.tv_modo); 

    Picasso.with(context).load(post.getFoto()).into(foto); 
    titulo.setText(post.getTitulo()); 
    autor.setText(post.getAutor()); 
    modo.setText(post.getModo()); 



    return convertView; 
} 

}

+0

Ajout d'un nouvel élément à la 0e position dans arraylist résoudrait ce – Shruti

Répondre

0

Si vous souhaitez conserver l'ancien article à la première position (c'est comme cela que j'ai compris la question), il vous suffit d'ajouter votre nouvel article à la bonne position. L'index doit être 1 + position de l'élément précédent.

Je vous recommande également d'utiliser RecyclerView au lieu de ListView pour de meilleures performances. Utilisez notifyItemInserted() au lieu de notifyDataSetChanged(), car il n'est pas nécessaire de recharger et de redessiner tout lorsque vous insérez un seul élément.

+0

Thaks !!! J'ai utilisé RecyclerView et ajouté l'article en position 0 comme vous me l'avez dit et cela a fonctionné <3 –

+0

Content que je puisse vous aider! :) Pourriez-vous s'il vous plaît accepter la réponse? Merci! –

0

Si vous utilisez un tableau, fixez votre position particulière sur le 0e index et ajoutez tous les éléments avec leur index respectif.

+0

mais l'article serait ajouté ci-dessous, j'en ai besoin mais ne m'envoyez pas, ou il y a la possibilité que je montre seulement 10 articles par exemple et je peux en voir plus si je continue à monter ou à descendre? je veux quelque chose comme facebook ou instagram –

+0

fixe premier objet alors il peut aider –