Android-ListView的学习(一)

一、ListView的一些xml属性:
1、divider:分割线样式,可以传颜色,也可以传图片。若是不设置,Android默认有一个蓝色分割线。
dividerHeight:分割线高度。
2、cacheColorHint:放置ListView在滑动过程中出现黑色闪动背景(在可定机型上,一般加上“#00000000”)。
3、entries:引用一个静态数组资源(不常用,需要建立一个xml的数组文件)
4、fastScrollAlwaysVisible:快速拖动条,一般用于大量数据集中于一个ListView中才会用到。true或false即可。
5、smoothScrollbar:ListView的滚动条是否可见。
6、stackFromBottom:设置内容直接从底部开始展示。true或false即可。
7、choiceMode:设置选择模式,singleChoice,multipleChoice, multipleChoiceModal,none(需要查阅相关API)
8、footerDividersEnabled:底部View是否有分割线
9、headerDividersEnabled:顶部View是否有分割线
10、drawSelectorOnTop:设置ListView绘制与Item上方或下方
二、ArrayAdapter
a、展示单一的字符串数据。

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener{
    ListView listView;
    List<String> list;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listView = (ListView) findViewById(R.id.listview);
        //Arrayadapter
        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, R.layout.support_simple_spinner_dropdown_item, getDate1());

        listView.setAdapter(arrayAdapter);


    }

    public List<String> getDate1(){
        list = new ArrayList<>();
        for (char i = 'A'; i <= 'Z'; i++){
            String value = Character.toString(i);
            list.add(value);
        }
        return list;
    }

PS:为ListView的listSelector属性设置点击效果,在drawable文件夹中建立selector的XML文件,

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item  android:drawable="@drawable/violet" android:state_focused="true" android:state_pressed="true" android:state_selected="true"/>
<item  android:drawable="@drawable/violet" android:state_focused="false" android:state_pressed="true" android:state_selected="true"/>
<item  android:drawable="@drawable/violet" android:state_focused="true" android:state_pressed="false" android:state_selected="true"/>
<item  android:drawable="@drawable/violet" android:state_focused="true" android:state_pressed="true" android:state_selected="false"/>
<item  android:drawable="@drawable/violet" android:state_focused="true" android:state_pressed="false" android:state_selected="false"/>
<item  android:drawable="@drawable/violet" android:state_focused="false" android:state_pressed="true" android:state_selected="false"/>
<item  android:drawable="@drawable/violet" android:state_focused="false" android:state_pressed="false" android:state_selected="true"/>
<item android:drawable="@drawable/white"/>
</selector>

注意:state_focused、state_pressed、state_selected三个属性。
三、SimpleAdaptr
a、在一个Item中展示多个类型数据
b、参数:
b.1、Context context
b.2、List

public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener{
    ListView listView;
    List<String> list;
    List<String> list2;
    List<Map<String, String>> listMap;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listView = (ListView) findViewById(R.id.listview);
        //Arrayadapter
        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, R.layout.support_simple_spinner_dropdown_item, getDate1());

//        listView.setAdapter(arrayAdapter);
        //SimpleAdapter
        SimpleAdapter simpleAdapter = new SimpleAdapter(this,
                getDate2(), R.layout.custom_item, new String[]{"title", "content"}, new int[]{R.id.textview1, R.id.textview2});

        listView.setAdapter(simpleAdapter);
        IAdapter iAdapter = new IAdapter(this, getDate1());
//        listView.setAdapter(iAdapter);

        listView.setOnItemClickListener(this);
    }

    public List<String> getDate1(){
        list2 = new ArrayList<>();
        for (char i = 'A'; i <= 'Z'; i++){
            String value = Character.toString(i);
            list2.add(value);
        }
        return list2;
    }

    public List<Map<String, String>> getDate2(){
        listMap = new ArrayList<>();
        for (char i = 'A';i <='Z'; i++){
            HashMap<String, String> hashMap = new HashMap<>();
            hashMap.put("title", Character.toString(i) + "_Name");
            hashMap.put("content", Character.toString(i));

            listMap.add(hashMap);
        }

        return listMap;
    }

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        Toast.makeText(this, listMap.get(position).toString(), Toast.LENGTH_SHORT).show();
    }
}

副布局xml文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ImageView
        android:id="@+id/imageview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scaleType="centerInside"
        android:src="@mipmap/ic_launcher"
        />
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="vertical"
        >
        <TextView
            android:id="@+id/textview1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"

            android:text="A_Name"
            android:textSize="20sp"
            />
        <TextView
            android:id="@+id/textview2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:visibility="gone"
            android:text="A"
            android:layout_below="@+id/textview1"
            android:textSize="20sp"
            />


    </RelativeLayout>

</LinearLayout>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值