问题
Is there an easy way to display a ListView in reverse order? I am trying to create a conversation-based app, and would like the most recent entries to be at the bottom of the ListView. I am aware of transcriptMode and stackFromBottom, however my problem is the order of the data.
Say I have 100 conversation items, and want to display items 80-100, with 100 being the most recent conversation item. I would like to show 80-100, which implies an ORDER BY id desc LIMIT 20 in my query, which forces the items to be sorted 100 to 80, the opposite of what I need. I currently have some nasty inner query code, but feel like there should be a simpler solution based on reversing the cursor or simply inverting the ListView.
回答1:
inside the baseAdapter
, for the getView()
method , instead of getting the item in the data in index "position" , use the opposite , meaning : numberOfItems minus the position .
as for showing the number of items , that's also inside the baseAdapter : set the value returned by getCount()
to be the one you wish it to be (20 in your example,though 80-100 implies that it should be 21 ) .
btw, it seems you are a starter in the case of listView . may i suggest watching this video: http://www.youtube.com/watch?v=wDBM6wVEO70
also check the api-demos provided by the sdk manager . they have plenty of examples there.
回答2:
Use this getItem Method inside your Adapter for reverse order:
@Override
public Object getItem(int position) {
return super.getItem(super.getCount() - position - 1);
}
回答3:
This code is worked for me when pulling data from database.
cs.moveToPosition(super.getCount() - position - 1); //cs is Cursor
回答4:
Query for records using BETWEEN keyword seems like the easiest solution to me.
来源:https://stackoverflow.com/questions/10941317/inverted-listview-in-android