一、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>