相关疑难解决方法(0)

有没有办法阻止列表视图在其适配器的数据更改时滚动到其顶部位置?

在更改它的适配器数据时,我在保留列表视图的滚动位置时遇到了一些麻烦.

我目前正在做的是在onCreateListFragment中创建一个自定义ArrayAdapter(带有重写的getView方法),然后将其分配给它的列表:

mListAdapter = new CustomListAdapter(getActivity());
mListAdapter.setNotifyOnChange(false);
setListAdapter(mListAdapter);
Run Code Online (Sandbox Code Playgroud)

然后,当我从定期获取一切装载机接收新的数据,我这样做是在其onLoadFinished回调:

mListAdapter.clear();
mListAdapter.addAll(data.items);
mListAdapter.notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)

问题是,调用clear()重置listview的滚动位置.删除该调用会保留该位置,但它显然会将旧项目留在列表中.

这样做的正确方法是什么?

android

20
推荐指数
2
解决办法
2万
查看次数

在“自定义列表视图”中向上滚动时,滚动位置跳至上一个列表项

我有一个包含列表视图的活动。当用户滚动到列表视图的底部时,列表将获取更多数据。当用户向下滚动时,滚动是平滑的。但是,当用户向上滚动时,列表视图倾向于将其可见项跳过一两个。

班级:

public class ListViewActivity extends Activity implements OnScrollListener {

    int id = 0;
    List<String> dataParse = new ArrayList<String>();
    LazyAdapter adapter;
    ListView listView;
    List<RichPost> richArrayList = new ArrayList<RichPost>();

    private int currentScrollState;
    private int currentVisibleItemCount;
    private int skipParam = 0;
    private boolean flag_loading = false;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_post_list_list);

        listView = (ListView) findViewById(R.id.listView);
        // Need to create the adapter constructor
        listView.setOnScrollListener(this);
        adapter = new LazyAdapter(PostListActivity.this, dataParse, richArrayList);
        listView.setAdapter(adapter);

        setStory();

    }

    public void setStory() {

        // Pull data …
Run Code Online (Sandbox Code Playgroud)

java android listview scroll

5
推荐指数
0
解决办法
2142
查看次数

标签 统计

android ×2

java ×1

listview ×1

scroll ×1