listView的常用属性:
android:cacheColorHint---设置拖动时候产生的背景色
android:dividerHeight---item之间分隔高度
android:divider---item之间分隔的背景或者说是颜色
android:fadingEdge="vertical",上边缘和下边缘有黑色阴影,设置为none的话就没有阴影。
android:scrollbars="horizontal|none":只有值为horizontal|vertical的时候,才会显示滚动条,并且会自动影藏和显示
android:fastScrollEnabled="true"://快速滚动效果,配置这个属性,在快速滚动的时候旁边会出现一个小方块的快速滚动效果,自动隐藏和显示
android:listSelector----//设置选中项显示的可绘制对象,可以是图片或者颜色属性
listView的常用方法:
void addHeaderView(View v)---增加一个固定在列表顶部的View,参数 v为欲添加的视图 ,头布局是可以添加多个的,要注意一下。
private void header() { // 设置头布局 ImageView imageView = new ImageView(this); imageView.setLayoutParams(new AbsListView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 200)); imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); imageView.setImageResource(R.drawable.yuanyuan); lv.addHeaderView(imageView); }
Void addFooterView(View v)--- Add a fixed view to appear at the bottom of the list,添加底部布局
private void footer() { // 设置尾布局 View footer = getLayoutInflater().inflate(R.layout.lv_footer, null); lv.addFooterView(footer); }
Void setSelection(int position):直接定位到列表中的指定位置item,使其直接处于可见范围之内,不需要滚动拉动。
Void setEmptyView(tv)---当listview适配的列表是空的时候,展示的view,它的使用必须要注意一点:
setEmptyView()这个方法是有限制的,这个View必须在当前的View hierarchy的节点上,我们可以自己写在当前布局文件里面,也可以写在外面,但是需要 把View添加到当前的View hierarchy的节点上。
Eg:
TextView tv = new TextView(this);
tv.setTextColor(Color.WHITE);
tv.setText("暂时没有数据");
tv.setGravity(Gravity.CENTER);
((ViewGroup) lv.getParent()).addView(tv);
lv.setEmptyView(tv);
private void emptyView() { // 设置emPtyView:当listview没有列表数据的时候,所要显示的view(和listview在同一个ui结构中) ImageView emptyView = new ImageView(this); emptyView.setLayoutParams(new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup .LayoutParams.MATCH_PARENT)); emptyView.setScaleType(ImageView.ScaleType.CENTER_CROP); emptyView.setImageResource(R.drawable.nodata); ((ViewGroup) lv.getParent()).addView(emptyView); lv.setEmptyView(emptyView); }
listView的常用监听方法:
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
}
});
listView的Adapter设置:
1、ArrayAdapter:
特点:数组资源适配器,适配数据item内容只需要一个控件表示的简单资源适配器
用法:ArrayAdapter<String> adapter = new ArrayAdapter<>
(JyOrderListActivity.this, android.R.layout.simple_list_item_1, new String[]{"order1", "order2"}); ArrayAdapter(Context context, int ViewResourceId, List<T> objects);
public class ArrayAdapterTest<S> extends Activity { private ListView listview; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); listview=new ListView(this); listview.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_expandable_list_item_1,getData())); setContentView(listview); } private List<String> getData() { List<String> data = new ArrayList<String>(); data.add("武汉"); data.add("北京"); data.add("长沙"); data.add("深圳"); return data; } }2、SimpleAdapter:
用法:SimpleAdapter simpleAdapter = new SimpleAdapter(JyOrderListActivity.this,data,
R.layout.jyorder_item,
new String[]{"tv0", "tv1", "tv2", "tv3", "tv4", "tv5", "tv6"},
new int[]{R.id.tv0, R.id.tv1, R.id.tv2, R.id.tv3, R.id.tv4, R.id.tv5, R.id.tv6});
public class SimpleAdapter extends Activity { @Bind(R.id.lv) ListView lv; @Bind(R.id.activity_simple_adapter) RelativeLayout activitySimpleAdapter; private List<Map<String,Object>> item; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_simple_adapter); ButterKnife.bind(this); item = new ArrayList<Map<String, Object>>(); initData(); android.widget.SimpleAdapter simpleAdapter = new android.widget.SimpleAdapter(this, item, R.layout.item_news, new String[]{"title", "tip1", "tip2", "icon"}, new int[]{R .id.tv_title, R.id.tv_tip1, R.id .tv_tip2, R.id.iv2}); lv.setAdapter(simpleAdapter); } private void initData() { Map<String, Object> map1 = new HashMap<>(); map1.put("title", "北京警方突查涉黄俱乐部后多为名人辟谣\"被抓\"传闻"); map1.put("tip1", "要闻"); map1.put("tip2", "1023评"); map1.put("icon", R.drawable.t1); item.add(map1); Map<String, Object> map2 = new HashMap<>(); map2.put("title", "一文读懂2016:世界末日如此疯狂"); map2.put("tip1", "国际"); map2.put("tip2", "1023评"); map2.put("icon", R.drawable.t1); item.add(map2); Map<String, Object> temp = new HashMap<>(); temp.put("title", "NBA正视频直播太阳VS火箭"); temp.put("tip1", "直播"); temp.put("tip2", "4630评"); temp.put("icon", R.drawable.t1); item.add(temp); for (int i = 0; i <= 10; i++) { Map<String, Object> temp2 = new HashMap<>(); temp2.put("title", "NBA正视频直播太阳VS火箭"); temp2.put("tip1", "直播"); temp2.put("tip2", "4630评"); temp2.put("icon", R.drawable.t1); item.add(temp2); } } }