Inverted ListView in Android?

折月煮酒 提交于 2019-12-17 20:07:07

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!