listview 循环滚动注释代码
时间: 2024-01-04 12:03:50 浏览: 31
以下是一个简单的 listview 循环滚动的示例代码,已经添加了注释解释每个步骤的作用。
```java
public class MainActivity extends AppCompatActivity {
private ListView mListView;
private List<String> mDataList;
private ArrayAdapter<String> mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化数据列表
initDataList();
// 初始化 ListView
mListView = findViewById(R.id.list_view);
mAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, mDataList);
mListView.setAdapter(mAdapter);
// 监听 ListView 滚动事件
mListView.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
// 判断是否已经滚动到最后一个条目
if (firstVisibleItem + visibleItemCount == totalItemCount) {
// 获取最后一个可见条目
View lastVisibleItemView = mListView.getChildAt(mListView.getChildCount() - 1);
if (lastVisibleItemView != null && lastVisibleItemView.getBottom() == mListView.getHeight()) {
// 如果最后一个可见条目已经完全显示,就将第一个条目移到最后一个条目后面,实现循环滚动
String firstItem = mDataList.get(0);
mDataList.remove(0);
mDataList.add(firstItem);
mAdapter.notifyDataSetChanged();
}
}
}
});
}
private void initDataList() {
mDataList = new ArrayList<>();
for (int i = 0; i < 20; i++) {
mDataList.add("Item " + i);
}
}
}
```
在上面的代码中,我们首先在 `initDataList()` 方法中初始化了数据列表,然后在 `onCreate()` 方法中将数据列表绑定到 ListView 上,并添加了滚动事件监听器。
在滚动事件监听器的 `onScroll()` 方法中,我们首先判断是否已经滚动到了最后一个条目,如果是,就获取最后一个可见条目,然后判断该条目是否已经完全显示。如果已经完全显示,就将第一个条目移到最后一个条目后面,实现循环滚动。
最后,我们需要调用 `notifyDataSetChanged()` 方法来通知 ListView 数据已经发生了改变,需要重新绘制界面。