Android ListView 排序

2024-02-17

我只是从 Android 开发开始,虽然 Milestone 是一个不错的设备,但 Java 不是我的自然语言,而且我在 Android SDK、Eclipse 和 Java 本身的 Google 文档上遇到了困难。反正...

我正在为 Android 编写一个微博客户端,以配合我的 Windows 客户端 (MahTweets)。目前我的推文毫无疑问地来来去去,问题出在用户界面上。

初始调用将正确排序项目(如从最高到最低)

  • 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 中的 ListView 进行排序,同时仍然能够使用 LayoutInflater? (rowLayout = t.GetParent().GetUI(t, parent, c)将UI扩展到微博实现可以提供的特定视图)


我不建议对 getItem() 中的底层列表进行排序,在我看来, get..() 方法应该是“幂等”的,并且不会对其父级状态产生任何外部可见的影响。

对于您的问题,我会在将推文添加到容器中时解决它。您尚未将这部分包含在应用程序源代码中,但您似乎正在使用 ArrayList。也许您正在查询 Twitter API 以获取最近排序的推文列表,并为每个结果调用 ArrayList 上的 add() ,这会将推文添加到列表的底部。

您知道可以在任意位置插入 ArrayList 吗?我会推荐reverse迭代来自 Twitter API 的结果,并使用 add(0, ....) 将每个结果插入到 ArrayList 的顶部,而不是添加到列表的后面。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android ListView 排序 的相关文章

随机推荐

  • PHP:从哈希中解密密码

    因此 我使用以下代码成功将密码加密为密码哈希 class PassHash blowfish private static algo 2a cost parameter private static cost 10 mainly for i
  • 将 Python Pandas 中的列名称从日期时间对象更改为字符串?

    下列的这个食谱 https stackoverflow com questions 28664103 how to transform a time series pandas dataframe using the index attri
  • AngularJS 应用程序身份验证最佳实践

    我开始构建一个 Web 应用程序 用户需要进行身份验证才能访问不同的模块 我过去一直使用 ASP NET MVC 使用 FormsAuthentication 和服务器会话非常容易 因此每次访问时我不必往返数据库即可获取用户角色或任何其他用
  • gradle进程具有不同替换和重命名规则的资源

    我想在我的 gradle 项目中过滤特定的 java 资源 有些文件应该只替换内容 有些文件也应该重命名 并替换不同的内容 我的 gradle java 项目设置是 gt cat build gradle apply plugin java
  • 有没有办法自动关闭 fork() 上的某些句柄?

    背景 我有一个大型的现有进程 它恰好在 AIX 上 所以基本上是 POSIX 语义 它是一个更大系统的一部分 现有流程设计为连续运行 此过程的一个新要求是处理一种新型的复杂输入流 为了降低风险 我决定分叉 执行一个子进程来执行实际的输入处理
  • 从 Terraform 状态文件中获取特定值

    我已经使用 Terraform 部署了我的基础设施 我注意到我在该州有一些有趣的信息 terraform tfstate 我想提取的 terraform 文件 例如 terraform state show packet device wo
  • Winston 3.0 对控制台上的整个输出进行着色

    我正在开发一个 Node js 应用程序 使用babel cli https www npmjs com package babel cli作为 ES6 转译器 我正在使用温斯顿3 0 https www npmjs com package
  • 删除以哈希开头的所有列表元素

    我有一个包含元素的列表 其中一些以 开头 我怎样才能删除这些元素 我试过 content x for x in content 0 if x but content 0 似乎无效 做这个的最好方式是什么 content x for x in
  • 如何在 Rust 可执行文件中嵌入资源?

    这是这个问题在这里 https stackoverflow com questions 10036769 how do you embed resource files in c对 C 提出同样的要求 基本上 有没有比将其转换为巨大的字节数
  • java线程立即更新UI

    我有一个 javaFX 应用程序 可以可视化计算几何算法 算法的执行发生在另一个线程中 我们称之为mainComputingThread 算法可以通过添加 删除 修改形状随时更新 UI 所以代码将如下所示 do some computaio
  • Spark SQL thrift 服务器无法以集群模式运行?

    在 Spark 1 2 0 中 当我尝试以集群模式启动 Spark SQL thrift 服务器时 我得到以下输出 Spark assembly has been built with Hive including Datanucleus
  • 尽管有写权限,scaling_max_freq 仍然无法更改

    我正在尝试更改存储的值in sys devices system cpu cpu0 cpufreq scaling max freq当前设置为 1512000 我正在尝试通过 adb shell 来执行此操作 我输入 su 然后导航到 sy
  • mysql2 gem 安装失败

    我的堆栈如下 CentOS 6 3 安装了 MySQL 5 5 步骤如下http www if not true then false com 2010 install mysql on fedora centos red hat rhel
  • 使用 ASP.NET GenericHandler 时管理 ASP.NET 中的会话超时

    例如 我有一个使用 jQuery 作为客户端框架的 Web 应用程序 现在 大多数页面都通过使用 AJAX 来运行 并通过使用通用处理程序 ashx 与服务器进行通信 现在我有一个问题 我想看看当我的用户会话过期时处理这些请求的最佳解决方案
  • 操纵事件和平移模式

    我正在开发一个用于触摸设备的 WPF 我面临一个奇怪的问题 我的 XAML 结构是
  • 在 Winforms 中检测空闲用户

    如果用户有 5 分钟不活动 我想暂停我的程序 我所说的不活动是指在那段时间没有按下鼠标或键盘 包括在程序之外 有什么出发点吗 在计时器内你可以 p invokeGetLastInputInfo http www pinvoke net de
  • 一次性编写字典?

    我很想在 Python 中拥有一个一次性写入的字典对象 这样 my dict 1 foo my dict 2 bar my dict 1 baz Raises KeyError 我可以想象制作一个简单的食谱 但我想知道是否存在经过深思熟虑的
  • 如何在 win32 中创建具有默认行为的按钮

    我一直在尝试创建一个具有默认行为的按钮 即当用户按 ENTER 时 该按钮将被触发 我使用 WS TABSTOP 样式创建了按钮 并向其发送了带有 BS DEFPUSHBUTTON has WPARAM 参数的 BM SETSTYLE 消息
  • 如何访问具有数组类型值的 Solidity 映射?

    我定义了一个映射类型的状态变量 例如映射 uint256 gt uint256 我想将其公开 以便我可以从合同之外访问它 但是编译器报错TypeError Wrong argument count for function call 1 a
  • Android ListView 排序

    我只是从 Android 开发开始 虽然 Milestone 是一个不错的设备 但 Java 不是我的自然语言 而且我在 Android SDK Eclipse 和 Java 本身的 Google 文档上遇到了困难 反正 我正在为 Andr