【问题标题】:Android listview how to scroll selected item to the topAndroid listview如何将所选项目滚动到顶部
【发布时间】:2014-11-15 03:49:08
【问题描述】:

我正在尝试在 Android 中创建一个 ListView。当我点击一个项目时,我希望它滚动到顶部。我怎样才能做到这一点?这是我正在尝试的 Activity 类,项目选择工作正常,但它不会滚动到顶部

public class MyListActivity extends ListActivity {
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        String[] values = new String[] { "Android", "iPhone", "WindowsMobile",
        "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X",
        "Linux", "OS/2" };
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, values);
        setListAdapter(adapter);
    }

    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        String item = (String) getListAdapter().getItem(position);
        //l.setSelection(2);

        Toast.makeText(this, position + " selected", Toast.LENGTH_LONG).show();
        //l.smoothScrollToPosition(5);

    }
}

【问题讨论】:

标签: android android-layout android-activity


【解决方案1】:

使用这个。将项目顺利滚动到列表视图的顶部。

int duration = 500;  //miliseconds
int offset = 0;      //fromListTop

listview.smoothScrollToPositionFromTop(position,offset,duration);
  • 缩短持续时间以加快滚动速度

【讨论】:

  • 感谢@MohsenBahmanpoor。很简单,我可以说并且完美地工作
【解决方案2】:

尝试使用此方法setSelection (int position)

设置当前选中的项目。要支持覆盖此方法的可访问性子类,必须首先调用 overridden 超级方法。

【讨论】:

    【解决方案3】:

    根据这个https://stackoverflow.com/a/18133295/3225458,你应该尝试post平滑滚动:

    @Override
    protected void onListItemClick(final ListView l, View v, int position, long id) {
        String item = (String) getListAdapter().getItem(position);
        l.post(new Runnable() {
            @Override
            public void run() {
                l.smoothScrollToPosition(pos);
            }
        });
        Toast.makeText(this, position + " selected", Toast.LENGTH_LONG).show();
    }
    

    【讨论】:

    • 我尝试了你的建议,但根本没有滚动
    【解决方案4】:

    试试这个:-

    yourListView.setOnItemClickListener(new OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                        long arg3) {
                    int duration = 500; // miliseconds
                    int offset = 0;
                    yourListView.smoothScrollToPositionFromTop(arg2, offset, duration);
                    yourListView.setSelection(arg2);
                }
            });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-14
      • 1970-01-01
      • 2011-02-22
      • 1970-01-01
      • 1970-01-01
      • 2019-12-17
      • 2014-06-06
      • 2015-02-17
      相关资源
      最近更新 更多