Android关于listView的详细内容

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);
        }
    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值