2017-10-16 90 views
1

我想繼續在同一個地方觀看我的物品,當我將新物品添加到列表中時,我該怎麼辦?當我添加一個新項目時,我該如何保存在我的listView項目中?

我正在使用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; 
} 

}

+0

在arraylist中的第0個位置添加新項目將解決這個 – Shruti

回答

0

如果你想保留舊的項目在第一個位置(這是我如何理解問題),那麼你只需要添加你的新項目在正確的位置。索引應該是前一項的1 +位置。

此外,我會建議您使用RecyclerView而不是ListView更好的性能。使用notifyItemInserted()而不是notifyDataSetChanged(),因爲在插入單個項目時不需要重新加載和重繪所有內容。

+0

Thaks !!!我使用了RecyclerView,並將其添加到位置0,就像您告訴我的那樣,它的工作原理<3 –

+0

很高興能幫到您! :)你能接受答案嗎?謝謝! –

0

如果您正在使用數組,然後修復您的特定項目位置在第0個索引並添加具有相應索引的所有項目。

+0

,但該項目將被添加到下面,我需要它但不會讓我失望,或者有可能我只顯示10個項目,例如我可以如果我繼續上升或下降,看更多?我想要像facebook或instagram –

+0

固定第一項然後它可能會幫助 –

相關問題