android二级listview
1. android编程中一个界面怎么编写两个listview,同时设置监听
你想放几个就放几个,这个事没有问题的。
首先:
你在布局文件里面添加两个listview,你可以用layout_weight 这个属性进行控制,比如都给1,然后水平和数值都是fillparent的那么这两个listview就是上下两个
其次:你在activity里面进行实例化这两个listview对象。然后同时设置统一个监听器,因为每个View 都有一个getId()方法,所以可以使用这个方法得到view的id,通过switch进行判断是哪个view,然后做出不同相应!
2. android listview 二级列表的作法
那个不是不是listview是ExpandableListview。
3. Android两个ListView同步滚动
这个实现是可以实现的,我不是很推荐你使用这种方式,但还是给你说下思路,在你滚动的那个listView的onScroll方法里面去实现另一个listView的滚动,但是这里有个问题,也是我以前项目用你这种方式去实现遇到的问题,就是你所谓的移动10px,这里我用LV1和LV2来表示两个listView,当LV1向上移动10px,必须是在它的滚动停止以后,LV2再跟着去滚动10px。因为在onScroll的时候,如果我们得在LV1的onScoll状态没有停止的情况下就得去更新LV2的滚动状态,也就是LV1滚动和LV2的滚动同步操作,这样去实现经常会遇到一些问题。
后来就想滚动LV1停止以后,去根据滚动距离去实现LV2的滚动,但是LV2的突然滚动,跟LV1其实就不是同步滚动了。这样实现起来,其实很不好,不管是应用性能还是给用户体验都很差。
我不是很清楚你的ListView里面有什么内容,但是如果可以避免这样使用的话,还是尽量避免,可以尝试使用布局将两个ListView item的东西都放到一个Layout里面去,将它们再添加到一个ScrollView里面,看上去是可以实现看上去像两个内容的同步的滚动。
4. android 中listview 的用法
1.在xml里面定义一个ListView,这个xml是一个activity的layout文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:id="@+id/LinearLayout01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<ListView android:layout_width="wrap_content" //定义一个listView
android:layout_height="wrap_content"
android:id="@+id/ListView01"
/>
</LinearLayout>
2.定义ListView每个条目的Layout,比如命名为listview_item.xml,用RelativeLayout实现:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:id="@+id/RelativeLayout01"
android:layout_width="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content"
android:paddingBottom="4dip"
android:paddingLeft="12dip"
android:paddingRight="12dip">
<ImageView
android:paddingTop="12dip"
android:layout_alignParentRight="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/ItemImage"
/>
<TextView
android:text="TextView01"
android:layout_height="wrap_content"
android:textSize="20dip"
android:layout_width="fill_parent"
android:id="@+id/ItemTitle"
/>
<TextView
android:text="TextView02"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_below="@+id/ItemTitle"
android:id="@+id/ItemText"
/>
</RelativeLayout>
3.在Activity里面调用和加入Listener,具体见注释:
package com.ray.test;
import java.util.ArrayList;
import java.util.HashMap;
import android.app.Activity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.MenuItem;
import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View.OnCreateContextMenuListener;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.AdapterView.OnItemClickListener;
public class TestListView extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//绑定Layout里面的ListView
ListView list = (ListView) findViewById(R.id.ListView01);
//生成动态数组,加入数据
ArrayList<HashMap<String, Object>> listItem = new ArrayList<HashMap<String, Object>>();
for(int i=0;i<10;i++)
{
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("ItemImage", R.drawable.checked);//图像资源的ID
map.put("ItemTitle", "Level "+i);
map.put("ItemText", "Finished in 1 Min 54 Secs, 70 Moves! ");
listItem.add(map);
}
//生成适配器的Item和动态数组对应的元素,这里用SimpleAdapter作为ListView的数据源
//如果条目布局比较复杂,可以继承BaseAdapter来定义自己的数据源。
SimpleAdapter listItemAdapter = new SimpleAdapter(this,listItem,//数据源
R.layout.list_items,//ListItem的XML实现
//动态数组与ImageItem对应的子项
new String[] {"ItemImage","ItemTitle", "ItemText"},
//ImageItem的XML文件里面的一个ImageView,两个TextView ID
new int[] {R.id.ItemImage,R.id.ItemTitle,R.id.ItemText}
);
//添加并且显示
list.setAdapter(listItemAdapter);
//添加点击
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
setTitle("点击第"+arg2+"个项目");
}
});
//添加长按点击
list.(new OnCreateContextMenuListener() {
@Override
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
menu.setHeaderTitle("长按菜单-ContextMenu");
menu.add(0, 0, 0, "弹出长按菜单0");
menu.add(0, 1, 0, "弹出长按菜单1");
}
});
}
//长按菜单响应函数
@Override
public boolean onContextItemSelected(MenuItem item) {
setTitle("点击了长按菜单里面的第"+item.getItemId()+"个项目");
return super.onContextItemSelected(item);
}
}
5. Android中ListView怎么使用
首先我们给出一个没有任何优化的Listview的Adapter类,我们这里都继承自BaseAdapter,这里我们使用一个包含100个字符串的List集合来作为ListView的项目所要显示的内容,每一个条目都是一个自定义的组件,这个组件中只包含一个textview:
Activity:
package com.alexchen.listviewoptimize;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
6. Android tv 左侧2级listview频道列表有开源控件么
Android实现频道列表的编辑、删除、移动等功能,这里我把频道的部分去除掉,只是记录下来关于这个ListVIew的一些编辑、删除和移动等功能,记录下来,以便查询!
实现效果:
布局文件这里就不放了,其实就是一个ListView。
首先定义一个类,用以记录频道的基本信息,包括名字、频道号、图标等信息
package com.Javen;
public class programInfo
{
private String tvNumber = null;
private String tvName = null;
private int tvIconId;
private boolean isDelete = false;
public String getTvNumber()
{
return tvNumber;
}
public void setTvNumber(String tvNumber)
{
this.tvNumber = tvNumber;
}
public String getTvName()
{
return tvName;
}
public void setTvName(String tvName)
{
this.tvName = tvName;
}
public int getTvIcon()
{
return tvIconId;
}
public void setTvIcon(int tvIconId)
{
this.tvIconId = tvIconId;
}
public boolean isDelete()
{
return isDelete;
}
public void setDelete(boolean isDelete)
{
this.isDelete = isDelete;
}
}
7. android中怎么让listview的内容全部显示出来
注意,如果listitem里面有textview的话,就当一行处理进行截取数字。
public static void (ListView listView) {
// 获取ListView对应的Adapter WeiboContentAdapter listAdapter = (WeiboContentAdapter) listView.getAdapter(); if (listAdapter == null) { return; } Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); mPaint.setTextAlign(Align.LEFT); LinearLayout listItem; TextView tvContent; int totalHeight = 0; int lineCount = 0; for (int i = 0, len = listAdapter.getCount(); i < len; i++) { // listAdapter.getCount()返回数据项的数目 listItem = (LinearLayout)listAdapter.getView(i, null, listView); tvContent = (TextView) listItem.findViewById(R.id.tv_weibo_detail_content); lineCount = getLineCount(mPaint, ((SpannedString) tvContent.getText()).toString()); tvContent.measure(0, 0); // 计算子项View 的宽高 totalHeight += tvContent.getMeasuredHeight()*lineCount + 60; // 统计所有子项的总高度 } ViewGroup.LayoutParams params = listView.getLayoutParams(); params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1)) ; // listView.getDividerHeight()获取子项间分隔符占用的高度 // params.height最后得到整个ListView完整显示需要的高度 listView.setLayoutParams(params); }
private static int getLineCount(Paint mPaint, String content) { int index; int count = 0; while(content.length() > 0){ index = mPaint.breakText(content, true, ResolutionUtil.getWPx()/2, null); content = content.substring(index); count++; } return count; }
/** * 动态改变listView的高度 * @param pull */ private void setPullLvHeight(ListView pull){ int totalHeight = 0; for (int i = 0, len = adapter.getCount(); i < len; i++) { //listAdapter.getCount()返回数据项的数目 View listItem = adapter.getView(i, null, pull); listItem.measure(0, 0); //计算子项View 的宽高 totalHeight += listItem.getMeasuredHeight(); //统计所有子项的总高度 } ViewGroup.LayoutParams params = pull.getLayoutParams(); params.height = totalHeight + (pull.getDividerHeight() * (pull.getCount() - 1)); pull.setLayoutParams(params); }
8. android,二级LISTVIEW怎么实现拜托各位大神
package com.rose.listview; import java.util.ArrayList; import java.util.List; import com.rose.xiaotexiao.R; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.BaseExpandableListAdapter; import android.widget.ExpandableListView; import android.widget.TextView; public class ErJiListView extends Activity { /** Called when the activity is first created. */ private ExpandableListView listView; private List<String> groupList = new ArrayList<String>(); private List<List<String>> childrenList = new ArrayList<List<String>>(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.erjilistview); listView = (ExpandableListView) findViewById(R.id.erjilistviwe); listView.setGroupIndicator(getResources().getDrawable(R.drawable.ic_launcher)); initData(); listView.setAdapter(new ExListViewAdapter()); } private void initData() { // TODO Auto-generated method stub groupList.add("你好1"); groupList.add("你好2"); groupList.add("你好3"); groupList.add("你好4"); groupList.add("你好5"); ArrayList<String> children1 = new ArrayList<String>(); children1.add("你好1111111"); children1.add("你好1111112"); children1.add("你好1111113"); children1.add("你好1111114"); children1.add("你好1111115"); children1.add("你好1111116"); ArrayList<String> children2 = new ArrayList<String>(); children2.add("你好22222221"); children2.add("你好22222222"); children2.add("你好22222223"); children2.add("你好22222224"); children2.add("你好22222225"); children2.add("你好22222226"); ArrayList<String> children3 = new ArrayList<String>(); children3.add("你好33333331"); children3.add("你好33333332"); children3.add("你好33333333"); children3.add("你好33333334"); children3.add("你好33333335"); children3.add("你好33333336"); ArrayList<String> children4 = new ArrayList<String>(); children4.add("你好44444441"); children4.add("你好44444442"); children4.add("你好44444443"); children4.add("你好44444444"); children4.add("你好44444445"); ArrayList<String> children5 = new ArrayList<String>(); children5.add("你好5555551"); children5.add("你好5555552"); children5.add("你好5555553"); children5.add("你好5555554"); children5.add("你好5555555"); childrenList.add(children1); childrenList.add(children2); childrenList.add(children3); childrenList.add(children4); childrenList.add(children5); } private class ExListViewAdapter extends BaseExpandableListAdapter { @Override public Object getChild(int groupPosition, int childPosition) { // TODO Auto-generated method stub return childrenList.get(groupPosition).get(childPosition); } @Override public long getChildId(int groupPosition, int childPosition) { // TODO Auto-generated method stub return childPosition; } @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { // TODO Auto-generated method stub if (convertView == null) { convertView = getLayoutInflater().inflate(R.layout.erjilistview_item, null); } TextView textView = (TextView) convertView.findViewById(R.id.erjilistview_tx); textView.setText((CharSequence) getChild(groupPosition, childPosition)); return convertView; } @Override public int getChildrenCount(int groupPosition) { // TODO Auto-generated method stub return childrenList.get(groupPosition).size(); } @Override public Object getGroup(int groupPosition) { // TODO Auto-generated method stub return groupList.get(groupPosition); } @Override public int getGroupCount() { // TODO Auto-generated method stub return groupList.size(); } @Override public long getGroupId(int groupPosition) { // TODO Auto-generated method stub return groupPosition; } @Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { // TODO Auto-generated method stub if(convertView == null){ convertView = getLayoutInflater().inflate(R.layout.erjilistview_item,null); } TextView textView = (TextView) convertView.findViewById(R.id.erjilistview_tx); textView.setText((CharSequence) getGroup(groupPosition)); return convertView; } @Override public boolean hasStableIds() { // TODO Auto-generated method stub return false; } @Override public boolean isChildSelectable(int groupPosition, int childPosition) { // TODO Auto-generated method stub return false; } } }
希望采纳
9. Android listview 的用法 越详细越好。
Android listview与adapter用法
listview与adapter用法
一个ListView通常有两个职责。
(1)将数据填充到布局。
(2)处理用户的选择点击等操作。
第一点很好理解,ListView就是实现这个功能的。第二点也不难做到,在后面的学习中读者会发现,这非常简单。
一个ListView的创建需要3个元素。
(1)ListView中的每一列的View。
(2)填入View的数据或者图片等。
(3)连接数据与ListView的适配器。
也就是说,要使用ListView,首先要了解什么是适配器。适配器是一个连接数据和AdapterView(ListView就是一个典型的AdapterView,后面还会学习其他的)的桥梁,通过它能有效地实现数据与AdapterView的分离设置,使AdapterView与数据的绑定更加简便,修改更加方便
Android中提供了很多的Adapter,表4-5列出了常用的几个。
表4-5 常用适配器
Adapter
含义
ArrayAdapter<T>
用来绑定一个数组,支持泛型操作
SimpleAdapter
用来绑定在xml中定义的控件对应的数据
SimpleCursorAdapter
用来绑定游标得到的数据
BaseAdapter
通用的基础适配器
其实适配器还有很多,要注意的是,各种Adapter只不过是转换的方式和能力不一样而已。下面就通过使用不同的Adapter来为ListView绑定数据(SimpleCursorAdapter暂且不讲,后面讲SQLite时会介绍)。
4.12.1 ListView使用ArrayAdapter
用ArrayAdapter可以实现简单的ListView的数据绑定。默认情况下,ArrayAdapter绑定每个对象的toString值到layout中预先定义的TextView控件上。ArrayAdapter的使用非常简单。
实例:
工程目录:EX_04_12
在布局文件中加入一个ListView控件。
<?xmlversion="1.0"encoding="utf-8"?> <LinearLayoutxmlns:android="
http://schemas.android.com/apk/res/android" android:layout_width="fill_parent"
android:layout_height="fill_parent"> <!-- 添加一个ListView控件 --> <ListView
android:id="@+id/lv" android:layout_width="fill_parent" android:layout_height="fill_parent"/>
</LinearLayout>
然后在Activity中初始化。
publicclass MyListView extends Activity {
privatestaticfinal String[] strs = new String[] {
"first", "second", "third", "fourth", "fifth"
};//定义一个String数组用来显示ListView的内容private ListView lv;/** Called when the activity is first created. */
@Override
publicvoid onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
setContentView(R.layout.main);
lv = (ListView) findViewById(R.id.lv);//得到ListView对象的引用 /*为ListView设置Adapter来绑定数据*/
lv.setAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, strs));
}
}
▲图4-29 ListView使用ArrayAdapter运行效果
代码非常的简单,运行效果如图4-29所示。
分析一下使用的步骤。
(1)定义一个数组来存放ListView中item的内容。
(2)通过实现ArrayAdapter的构造函数来创建一个ArrayAdapter的对象。
(3)通过ListView的setAdapter()方法绑定ArrayAdapter。
其中第二步有必要说一下的是,ArrayAdapter有多个构造函数,例子中实现的是最常用的一种。第一个参数为上下文,第二个参数为一个包含TextView,用来填充ListView的每一行的布局资源ID。第三个参数为ListView的内容。其中第二个参数可以自定义一个layout,但是这个layout必须要有TextView控件。通常我们使用Android提供的资源,除了例子中所用的,常用的还有如下几种,可实现带RadioButton和CheckBox的ListView。
(1)通过指定android.R.layout.simple_list_item_checked这个资源,实现带选择框的ListView。需要用setChoiceMode()方法设定选择为多选还是单选,否则将不能实现选择效果,运行效果如图4-30所示。
实现代码如下:
lv.setAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_checked, strs));
lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
(2)通过指定android.R.layout.simple_list_item_multiple_choice这个资源实现带CheckBox的ListView。同样的,需要用setChoiceMode()方法来设置单选或者多选,运行效果如图4-31所示。
实现代码如下:
lv.setAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_multiple_choice, strs));
lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
(3)通过指定android.R.layout.simple_list_item_single_choice这个资源实现带RadioButton的ListView。这里要注意的是,这里并不是指定了单选。是多选还是单选要通过setChoiceMode()方法来指定,运行效果如图4-32所示。
实现代码如下:
lv.setAdapter(newArrayAdapter<String>(this,
android.R.layout.simple_list_item_single_choice,strs));
lv.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
在前面讲到过,ListView的职责除了填充数据外,还要处理用户的操作。通过如下的代码就可以为ListView绑定一个点击监听器,点击后在标题栏显示点击的行数。
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
publicvoid onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
//点击后在标题上显示点击了第几行 setTitle("你点击了第"+arg2+"行");
}
});
4.12.2 ListView使用SimpleAdapter
很多时候需要在列表中展示一些除了文字以外的东西,比如图片等。这时候可以使用SimpleAdapter。SimpleAdapter的使用也非常简单,同时它的功能也非常强大。可以通过它自定义ListView中的item的内容,比如图片、多选框等。看一个例子,实现一个每一行都有一个ImageView和TextView的ListView。先看一下运行效果,如图4-34所示。
▲图4-34 带图标的ListView
首先在布局文件中增加一个ListView控件。
还需要定义一个ListView中每一行的布局,用RelativeLayout来实现一个带两行字和一个图片的布局。
item.xml:
<?xmlversion="1.0"encoding="utf-8"?>
<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent" android:layout_width="fill_parent">
<ImageViewandroid:layout_alignParentRight="true" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/ItemImage"/>
<TextViewandroid:id="@+id/ItemTitle" android:layout_height="wrap_content"
android:layout_width="fill_parent" android:textSize="20sp"/>
<TextViewandroid:id="@+id/ItemText" android:layout_height="wrap_content"
android:layout_width="fill_parent" android:layout_below="@+id/ItemTitle"/> </RelativeLayout>
配置完毕,就可以在Java代码中为ListView绑定数据。
publicclass MyListViewSimple extends Activity {
private ListView lv;
/** Called when the activity is first created. */ @Override
publicvoid onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
setContentView(R.layout.main);
lv = (ListView) findViewById(R.id.lv);/*定义一个动态数组*/
ArrayList<HashMap<String, Object>> listItem = new ArrayList<HashMap<String, Object>>();/*在数组中存放数据*/
for(int i=0;i<10;i++)
{
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("ItemImage", R.drawable.icon);//加入图片 map.put("ItemTitle", "第"+i+"行");
map.put("ItemText", "这是第"+i+"行");
listItem.add(map);
}
SimpleAdapter mSimpleAdapter = new SimpleAdapter(this,listItem,//需要绑定的数据
R.layout.item,//每一行的布局//动态数组中的数据源的键对应到定义布局的View中new String[] {"ItemImage"
,"ItemTitle", "ItemText"},
newint[] {R.id.ItemImage,R.id.ItemTitle,R.id.ItemText}
);
lv.setAdapter(mSimpleAdapter);//为ListView绑定适配器 lv.setOnItemClickListener(new
OnItemClickListener() {
@Override
publicvoid onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
setTitle("你点击了第"+arg2+"行");//设置标题栏显示点击的行
}
});
}
}
使用simpleAdapter的数据一般都是用HashMap构成的列表,列表的每一节对应ListView的每一行。通过SimpleAdapter的构造函数,将HashMap的每个键的数据映射到布局文件中对应控件上。这个布局文件一般根据自己的需要来自己定义。梳理一下使用SimpleAdapter的步骤。
(1)根据需要定义ListView每行所实现的布局。
(2)定义一个HashMap构成的列表,将数据以键值对的方式存放在里面。
(3)构造SimpleAdapter对象。
(4)将LsitView绑定到SimpleAdapter上。
4.12.3 ListView使用BaseAdapter与ListView的优化
在ListView的使用中,有时候还需要在里面加入按钮等控件,实现单独的操作。也就是说,这个ListView不再只是展示数据,也不仅仅是这一行要来处理用户的操作,而是里面的控件要获得用户的焦点。读者可以试试用SimpleAdapter添加一个按钮到ListView的条目中,会发现可以添加,但是却无法获得焦点,点击操作被ListView的Item所覆盖。这时候最方便的方法就是使用灵活的适配器BaseAdapter了。
使用simpleAdapter的数据一般都是用HashMap构成的列表,列表的每一节对应ListView的每一行。通过SimpleAdapter的构造函数,将HashMap的每个键的数据映射到布局文件中对应控件上。这个布局文件一般根据自己的需要来自己定义。梳理一下使用SimpleAdapter的步骤。
(1)根据需要定义ListView每行所实现的布局。
(2)定义一个HashMap构成的列表,将数据以键值对的方式存放在里面。
(3)构造SimpleAdapter对象。
(4)将LsitView绑定到SimpleAdapter上。
4.12.3 ListView使用BaseAdapter与ListView的优化
在ListView的使用中,有时候还需要在里面加入按钮等控件,实现单独的操作。也就是说,这个ListView不再只是展示数据,也不仅仅是这一行要来处理用户的操作,而是里面的控件要获得用户的焦点。读者可以试试用SimpleAdapter添加一个按钮到ListView的条目中,会发现可以添加,但是却无法获得焦点,点击操作被ListView的Item所覆盖。这时候最方便的方法就是使用灵活的适配器BaseAdapter了。
【内容较多,可以自己去看】
[转自:http://www.cnblogs.com/zhengbeibei/archive/2013/05/14/3078805.html]
10. android ListView用法和属性
ListView是一个用来纵向显示条目的视图,这些条目内容来自于与该ListView相关联的ListAdapter.
android:divider//在列表条目之间显示的drawable或color
android:dividerHeight//用来指定divider的高度
android:entries//构成ListView的数组资源的引用。对于某些固定的资源,这个属性提供了比在程序中添加资源更加简便的方式
android:footerDividersEnabled//当设为false时,ListView将不会在各个footer之间绘制divider.默认为true。
android:headerDividersEnabled//当设为false时,ListView将不会在各个header之间绘制divider.默认为true
android:cacheColorHint// 表明这个列表的背景始终以单一、固定的颜色绘制,可以优化绘制过程。
android:choiceMode//为视图指定选择的行为。可选的类型有:none、singleChoice、multipleChoice、multipleChoiceModal。
android:drawSelectorOnTop// 若设为true,选择器将绘制在选中条目的上层。默认为false。
android:fastScrollEnabled// 设置是否允许使用快速滚动滑块。
android:addStatesFromChildren// 设置这个ViewGroup的drawable状态是否包括子View的状态。若设为true,当子View如EditText或Button获得焦点时,整个ViewGroup也会获得焦点。
android:alwaysDrawnWithCache// 设置ViewGroup在绘制子View时是否一直使用绘图缓存。默认为true。
android:animationCache// 设置布局在绘制动画效果时是否为其子View创建绘图缓存。若设为true,将会消耗更多的内存,要求持续时间更久的初始化过程,但表现更好。默认为true。
android:clipChildren// 设置子View是否受限于在自己的边界内绘制。若设为false,当子View所占用的空间大于边界时可以绘制在边界外。默认为true。
android:clipToPadding//定义布局间是否有间距。默认为true。
android:descendantFocusability// 定义当寻找一个焦点View的时候,ViewGroup与其子View之间的关系。可选项为:
//(1)beforeDescendants ViewGroup会比其子View更先获得焦点;
//(2)afterDescendants 只有当无子View想要获取焦点时,ViewGroup才会获取焦点;
//(3)blockDescendants ViewGroup会阻止子View获取焦点
android:layoutAnimation//定义当ViewGroup第一次展开时的动画效果,也可人为地在第一次展开后调用。
android:persistentDrawingCache// 定义绘图缓存的持久性。有如下可选项:
//(1)none 当使用过后不保留绘图缓存
//(2)animation 在layout animation之后保留绘图缓存
//(3)scrolling 在Scroll操作后保留绘图缓存
//(4)all always保留绘图缓存
android:listSelector// 设置选中项显示的可绘制对象,可以是图片或者颜色属性。
android:scrollingCache// 设置在滚动时是否使用绘制缓存。若设为true,则将使滚动表现更快速,但会占用更内存。默认为true。
android:smoothScrollbar// 为真时,列表会使用更精确的基于条目在屏幕上的可见像素高度的计算方法。默认该属性为真,如果你的适配器需要绘制可变高的条目,他应该设为假。当该属性为真时,你在适配器在显示变高条目时,滚动条的把手会在滚动的过程中改变大小。当设为假时,列表只使用适配器中的条目数和屏幕上的可见条目来决定滚动条的属性。
android:stackFromBottom// 设置GridView和ListView是否将内容从底部开始显示。
android:textFilterEnabled// 当设为真时,列表会将结果过滤为用户类型。前提是这个列表的Adapter必须支持Filterable接口。
android:transcriptMode//设置列表的transcriptMode.有如下选项可选:
//(1)disabled 禁用TranscriptMode,也是默认值;
//(2)normal 当新条目添加进列表中并且已经准备好显示的时候,列表会自动滑动到底部以显示最新条目;
//(3)alwaysScroll 列表会自动滑动到底部,无论新条目是否已经准备好显示.
目前推荐用的是 RecycleView