我只是从
Android dev开始,虽然Milestone是一个不错的设备,但Java并不是我的自然语言,而且我在Android SDK,Eclipse和Java本身的Google文档上都很挣扎.无论如何…
我正在为Android编写一个微博客户端,以配合我的Windows客户端(MahTweets).目前我已经有推文来来往往,问题出在UI上.
初始调用将正确订购商品(从最高到最低)
> 3
> 2
> 1
刷新时
> 3
> 2
> 1
> 6
> 5
> 4
处理推文后,我正在调用adapter.notifyDataSetChanged();
最初我认为适配器上的getItem()需要排序(下面的代码是我最终得到的),但我仍然没有运气.
- public class TweetAdapter extends BaseAdapter
- {
- private List<IStatusUpdate> elements;
- private Context c;
- public TweetAdapter(Context c,List<IStatusUpdate> Tweets)
- {
- this.elements = Tweets;
- this.c = c;
- }
- public int getCount() {
- return elements.size();
- }
- public Object getItem(int position) {
- Collections.sort(elements,new IStatusUpdateComparator());
- return elements.get(position);
- }
- public long getItemId(int id) {
- return id;
- }
- public void Remove(int id)
- {
- notifyDataSetChanged();
- }
- public View getView(int position,View convertView,ViewGroup parent)
- {
- RelativeLayout rowLayout;
- IStatusUpdate t = elements.get(position);
- rowLayout = t.GetParent().GetUI(t,parent,c);
- return rowLayout;
- }
- class IStatusUpdateComparator implements Comparator
- {
- public int compare(Object obj1,Object obj2)
- {
- IStatusUpdate update1 = (IStatusUpdate)obj1;
- IStatusUpdate update2 = (IStatusUpdate)obj2;
- int result = update1.getID().compareTo(update2.getID());
- if (result == -1)
- return 1;
- else if (result == 1)
- return 0;
- return result;
- }
- }
- }
有没有更好的方法来在Android中排序ListViews,同时仍然能够使用LayoutInflater? (rowLayout = t.GetParent().GetUI(t,c)将UI扩展到微博实现可以提供的特定视图)