在ListView顶部显示新项目

rph*_*101 10 android listview list insert

我正在使用列表来填充ListView().用户可以将项目添加到列表中.但是,我需要将项目显示在ListView的顶部.如何在列表的开头插入一个项目以便以相反的顺序显示它?

kos*_*osa 20

默认情况下,list会在底部添加元素.这就是为什么你添加的所有新元素都将显示在底部.如果你想以相反的顺序,可能在设置listadapter/view之前反转列表

就像是:

Collections.reverse(yourList);
Run Code Online (Sandbox Code Playgroud)


mes*_*mes 15

另一种不修改原始列表的解决方案,覆盖适配器中的getItem()方法

@Override
public Item getItem(int position) {
    return super.getItem(getCount() - position - 1);
}
Run Code Online (Sandbox Code Playgroud)

更新:示例

public class ChatAdapter extends ArrayAdapter<ChatItem> {
public ChatAdapter(Context context, List<ChatItem> chats) {
    super(context, R.layout.row_chat, chats);
}

@Override
public Item getItem(int position) {
    return super.getItem(getCount() - position - 1);
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    if(convertView == null) {
        convertView = inflater.inflate(R.layout.row_chat, parent, false);
    }

    ChatItem chatItem = getItem(position);
    //Other code here

    return convertView;
}
Run Code Online (Sandbox Code Playgroud)

}


aym*_*ric 10

您应该使用an ArrayAdapter并使用该insert(T, int)方法.

例如:

ListView lv = new ListView(context);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(context, R.id...);
lv.setAdapter(adapter);
...
adapter.insert("Hello", 0);
Run Code Online (Sandbox Code Playgroud)