当我添加新项目时,如何保留我的listView项目?

时间:2017-10-16 09:18:25

标签: android listview firebase android-recyclerview

我想在同一个地方继续观看我的项目,当我将新项目添加到列表项目时,我该怎么办?

我正在使用firebase,但这不是问题。

这里,我想看的项目

here, the item that i want to see

这里,发送给我的新项目

here, the new item that sends me down

//这样我从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;
}

}

2 个答案:

答案 0 :(得分:0)

如果您正在使用数组,则修复第0个索引上的特定项目位置,并添加具有相应索引的所有项目。

答案 1 :(得分:0)

如果您想将旧项目保留在第一个位置(这就是我理解问题的方式),那么您只需要将新项目添加到正确的位置即可。索引应为上一项的1 +位置。

另外,我建议您使用RecyclerView而不是ListView以获得更好的性能。使用notifyItemInserted()而不是notifyDataSetChanged(),因为在插入单个项目时不需要重新加载和重绘所有内容。