在activity_main.xml加入listView元件
< ListView
android:id= "@+id/listView"
android:layout_width= "match_parent"
android:layout_height= "match_parent"
/>
MainActivity.java 加入一段codepublic class MainActivity extends Activity {
// private List<String> listData;
private ListView listView;
private String[] data;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout. activity_main);
listView = (ListView) findViewById(R.id. listView);
initData();
listView.setSelection(4);
}
private void initData() {
data = new String[] { "基隆市" , "台北市" , "新北市" , "桃園縣" , "新竹縣" ,
"苗栗縣" , "台中市" , "彰化縣" , "南投縣" , "雲林縣" , "嘉義縣" , "台南市" , "高雄市" , "屏東縣" ,
"宜蘭縣" , "花蓮縣" , "台東縣" , "澎湖縣" };
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this ,
android.R.layout. simple_expandable_list_item_1 , data);
listView.setAdapter(adapter);
}
}
以執行結果來說,一開始會顯示基隆市、台北市...依序由上往下排,要看到下面的資料,就要往上scroll。
當然我們也可以一開始就讓ListView的資料示在最後一筆。
只要在ListView加入屬性android:stackFromBottom = "true"< ListView
android:id= "@+id/listView"
android:layout_width= "match_parent"
android:layout_height= "match_parent"
android:stackFromBottom = "true"
/>
這樣設定的好處是當有新資料加入時,則會自動移到最底一行。顯示方式不只如此,如果我們要一開始指定從新竹市開始以下,以index來說新竹市的位置是4. 我們可以在initData();之後指定listView scroll的位置。
listView.setSelection(4);
也就是說,如果android:stackFromBottom設定為flase,但又要將listView顯示最後一筆的位置。
就可以用這個來代替listView.setSelection( data.length - 1);
我們也可以判斷listview是否已經移到最底,只要我們把listview設定scrollListener就可以囉。listView .setOnScrollListener( new OnScrollListener() {
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
if (firstVisibleItem + visibleItemCount == totalItemCount) {
//最底
isScrollFoot = true;
} else {
isScrollFoot = false;
}
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (scrollState == OnScrollListener.SCROLL_STATE_IDLE && isScrollFoot ) { // 滾動靜止且滾動到最底部
//停在最底部
Toast. makeText(MainActivity. this, "最後一筆囉!", Toast. LENGTH_SHORT).show();
} else {
// 不是停在最底部
}
}
});
這一行是判斷是否在最後一筆。if (firstVisibleItem + visibleItemCount == totalItemCount)
判斷是否為靜止狀態if(scrollState == OnScrollListener.SCROLL_STATE_IDLE)
以上了解ListView scroll的基本用法後,listView的滾動應用就更方便、多元了。
沒有留言:
張貼留言