【问题标题】:how to push selected item to top in listview android如何在listview android中将所选项目推到顶部
【发布时间】:2014-10-14 03:49:07
【问题描述】:

我的列表视图中有大约 5 个视图,我想将所选视图推到列表视图的顶部(设置位置 0)并向下移动其余视图。例如我的观点从上到下是这样的

1-2-3-4-5

当我选择第三个时,我希望列表视图是这样的:

3-1-2-4-5 但当然他们的最后一个位置 id 必须是这样的 1-2-3-4-5

【问题讨论】:

  • 将所选位置与第一个位置交换,然后通知适配器数据已更改
  • 您可以做的事情,查看所有元素并在替换它们后重新创建这些元素。将它们加载到列表中,然后在第一个位置插入单击的元素。
  • 我知道我需要换掉它,但是怎么换?你没有任何直接代码来交换列表视图项目
  • 我添加了一个问题的答案,它显示了如何将所有子按钮(您应该更改它)加载到列表中(不要忘记更改列表的类型,它是这样写的 字符内)。之后,我将删除视图并将它们一一添加回来。 :) 首先插入点击的元素并跳过循环中的元素!我还没有尝试过,所以这是一个猜测。

标签: android android-listview


【解决方案1】:

我给你做了一个小例子,你可以如何重新排列你的列表,请注意这仅适用于按钮(如果你要移动整个视图,你可以将演员更改为视图。此外,这仅适用于一个按钮现在,但您可以轻松更改!

Button btn = (Button)findViewById(R.id.button1);
btn.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View arg0) {
        // create a new list
        ArrayList<Button> list = new ArrayList<Button>();
        ScrollView view = (ScrollView)findViewById(R.id.scrollView1);

        // add your clicked element on position 0
        list.add ( (Button) arg0 );

        for ( int i = 0; i < view.getChildCount(); i++ ) {
            if ( view.getChildAt(i) != arg0 ) {
                list.add( (Button) view.getChildAt(i));
            }
        }

        view.removeAllViews();

        for ( int x = 0; x < list.size(); x++ ) {
            view.addView(list.get(x));
            list.remove(x);
        }
    }
});

【讨论】:

  • 谢谢它的工作,但我有一个小问题,当我点击一个位置两次时,它确实推高了我点击的唯一第一个视图
  • 您是否将侦听器添加到每个按钮?如果没有,它将无法正常工作。如果您不使用按钮,则可能需要为正在使用的元素(布局或其他)设置一个侦听器。
  • 如果这个解决方案是正确的,请将其标记为答案,这样其他人就不会浪费时间写一个。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-01
  • 1970-01-01
  • 2014-02-03
  • 2012-06-14
  • 2018-12-29
  • 2019-12-17
  • 2011-05-29
相关资源
最近更新 更多