【问题标题】:android ListView hide position 0 until scrollingandroid ListView隐藏位置0直到滚动
【发布时间】:2014-10-12 07:08:05
【问题描述】:

我想要的是在创建列表时隐藏第一个位置

但如果用户滚动列表以向上显示隐藏项

我试图在创建列表后隐藏第一个项目,但有时列表只有两个项目,所以它不滚动我怎样才能做到这一点?

listview.post(new Runnable() {
    @Override
    public void run() {
        listview.setSelection(1);
    }
});

列表至少可以有行。

【问题讨论】:

  • sum of list items height小于listview的高度如何滚动。您需要为此计算替代逻辑,或将高度降低到小于一个元素的高度。我更喜欢早点而不是晚点
  • 您可以将第一项作为Header,然后增加/减少Header的高度。

标签: android listview scroll


【解决方案1】:

您可以尝试的一件事是跳过适配器中的第一个元素,并在滚动 ListView 时将旧项目切换为新项目(包括第一个项目)。例如:

final List<String> items = new ArrayList<String>();

List<String> itemsFirstSkipped = items.subList(1, items.size()-1);

final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
        android.R.layout.simple_list_item_1, android.R.id.text1,
        itemsFirstSkipped);
listView.setAdapter(adapter);
listView.setOnScrollListener(new AbsListView.OnScrollListener() {
    @Override
    public void onScrollStateChanged(AbsListView view, int scrollState) {

    }

    @Override
    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
        // Make sure at least 1 item is scrolled
        if (firstVisibleItem>0) {
            adapter.clear();
            adapter.addAll(items);
            // notifyDataSetChanged is called by default
        }
    }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-09
    • 2011-07-26
    • 2015-09-26
    相关资源
    最近更新 更多