Pau*_*ins 6 java android listview
我只是从Android dev开始,虽然Milestone是一个不错的设备,但Java并不是我的自然语言,而且我在Android SDK,Eclipse和Java本身的Google文档上都很挣扎.无论如何...
我正在为Android编写一个微博客户端,以配合我的Windows客户端(MahTweets).目前我已经有推文来来往往,问题出在UI上.
初始调用将正确订购商品(从最高到最低)
刷新时
处理推文后,我正在调用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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来在Android中排序ListViews,同时仍然能够使用LayoutInflater?(rowLayout = t.GetParent().GetUI(t, parent, c)将UI扩展到微博实现可以提供的特定视图)
Jim*_*ler 14
我不建议在getItem()中对基础列表进行排序,在我看来,get ...()方法应该是'idempotent'并且对其父级状态没有任何外部可见的影响.
如果您遇到问题,我会在将推文添加到容器中的时候解决它.您尚未包含此部分应用源,但您似乎可能正在使用ArrayList.也许您正在查询Twitter API以获取最近订购的推文列表,并在您的ArrayList上为每个结果调用add(),这会将推文添加到列表的底部.
您是否知道可以随时插入ArrayList?我建议反向迭代来自Twitter API的结果,并使用add(0,....)将每个结果插入到ArrayList的顶部,而不是添加到列表的后面.
| 归档时间: |
|
| 查看次数: |
17449 次 |
| 最近记录: |