文/程序员男神
前言
马上就要到春节了,我还在公司上班,因为我的心里只有工作。领导看到是不是年后就要给我加薪了,话说这是第一次那么晚还没回家过年,虽然自己手上没多少工作,但是没年假的新人怎么破?只有撸起代码,充实一下空虚的内心。
概述
官方文档对其定义很简单:
A view that shows items in a vertically scrolling list. The items come from the ListAdapter associated with this view.
是一种在垂直滚动列表中显示item的视图。该item来自于listadapter相关的视图。
简单的使用方法
我们知道想要实现ListView展示简单数据,只需三步。初始化ListView,得到数据源,用适配器绑定数据源。这里我们实现了单选item,复选item,以及对item的监听。单选、复选item需要两步,首先设置setChoiceMode,然后初始化适配器引用的布局部分也要修改。直接上代码,代码中已经明确注释:
/**
* desc: ListView的基本使用
* author: dj
* date: 2017/1/24 11:00
*/
public class MainActivity extends AppCompatActivity {
private ListView listView;
private ArrayAdapter<String> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView) findViewById(R.id.lv_show);
/*设置ListView的选中模式*/
//listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
/*初始化适配器*/
adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, getDataSource());
/*设置适配器*/
listView.setAdapter(adapter);
/*item监听事件*/
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(MainActivity.this, "OnItemClick", Toast.LENGTH_SHORT).show();
}
});
}
/*listView的数据源*/
public List<String> getDataSource() {
List<String> list = new ArrayList<String>();
for (int i = 0; i < 66; i++) {
list.add("Happy New Year " + i + " !");
}
return list;
}
}
xml文件很简单,我只设置divider(下划线颜色)和dividerHeight(下划线高度)两个属性,代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ListView
android:id="@+id/lv_show"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:divider="@color/gray"
android:dividerHeight="1dp" />
</LinearLayout>
效果图如下:
总结
在这里有个疑问,我使用ButterKnife插件,总是报空指针异常?数据源和上文一致。