1.创建一个JAVA类
2.实例化一个List集合:private List<String> list = new ArrayList<String>();
3.创建一个方法写入数据:list.add("text");
4.创建一个内部类:继承 BaseAdapter
在类中
View view = LayoutInflater.from(ListTest.this).inflate(R.layout.listtest1, null);//第二个页面布局
TextView view2 = (TextView) view.findViewById(R.id.layout2);//第二个页面布局id
view2.setText(list.get(arg0));
return view;//将结果返回
5.绑定适配器
//第二个页面布局id的listView.setAdapter(内部类名);
6.<xml>listview中
去掉自带的线条: android:divider="@null"
********************************************************************************************
单击事件item:
1、设置listview单击事件:
/**
* listview单击事件
*/
//setOnItemClickListener:设置每一条list点击监听
listView.
setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View v, int position,
long id) {
if (position == 0) {
Toast.makeText(Successfully.this, "第一个事件" ,
Toast.LENGTH_SHORT).show();
//跳转事件
}
//当前点击的第position个事件
// Toast.makeText(Successfully.this, "" +
position,
// Toast.LENGTH_SHORT).show();
}
---------------------------------------------------------------------------------------------------------
2、添加
长按点击菜单:
setOnItemLongClickListener长按事件
//setOnCreateContextMenuListener:设置每一个上下文菜单对象监听
listView.
setOnCreateContextMenuListener(new OnCreateContextMenuListener() {
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
menu.setHeaderTitle("选项");
//长按时点击的第几个事件
menu.add(0,
0, 0, "增加");
menu.add(0,
1, 0, "删除");
menu.add(0,
2, 0, "查找");
menu.add(0,
3, 0, "更改");
}
});
// 长按菜单响应函数
方法
//item.getItemId():获取长按时点击的第几个事件
@Override
public boolean onContextItemSelected(MenuItem item) {
Toast.makeText(Successfully.this, "点击了长按菜单里面的第" +
item.getItemId() + "个项目", 1).show();
return super.onContextItemSelected(item);
}
///
将listview内容移到首部或末尾
末尾:
listView0
.smoothScrollToPosition(listView0.getCount() - 1);(聊天记录上推)
listView0.setSelection(listView0.getBottom());(聊天记录置底)
首部:
listView0.smoothScrollToPosition(0);
listview的缓存:
viewholser holder;
@Override
// 缓存机制:对内存的优化,加快应用程序的速度
public View getView(int position, View convertView, ViewGroup parent) {
// convertView:缓存视图
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(
R.layout.
listview_layout
, null);
holder = new viewholser();
holder.
textView0
= (TextView) convertView.findViewById(R.id.
text
);
convertView.setTag(holder);
} else {
holder = (viewholser) convertView.getTag();
}
holder.textView0.setText(list.get(position));
return convertView;
}
/**
* 视图管理者
*
* viewholser:管理布局的控制对象
*/
private class viewholser {
TextView
textView0
;
}
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ExpandableListview:
继承
BaseExpandableListAdapter
@Override
public int getGroupCount() {
// TODO Auto-generated method stub
return group.length;
}
@Override
public int getChildrenCount(int groupPosition) {
// 列数
return child[groupPosition].length;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
convertView = LayoutInflater.from(ExpandableListviewActivity.this)
.inflate(R.layout.group_0, null);
TextView textView0 = (TextView) convertView
.findViewById(R.id.group0);
textView0.setText(group[groupPosition]);
return convertView;
}
@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
convertView = LayoutInflater.from(ExpandableListviewActivity.this)
.inflate(R.layout.child_0, null);
ImageView imageView0 = (ImageView) convertView
.findViewById(R.id.image0);
TextView textView0 = (TextView) convertView
.findViewById(R.id.child0);
imageView0.setImageResource(pic[groupPosition]);
textView0.setText(child[groupPosition][childPosition]);
return convertView;
}
------------------------------------------------------------------------------
ListView有数据和没有数据时:
listView0.setEmptyView(findViewById(R.id.
myText));
//当listview列表没有数据时,listview会默认显示该布局
<TextView android:id="@+id/myText" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:text="No items."/>
-----------------------------------------------------------------------------
// 解决ListView与ScrollView冲突
public void setListViewHeight(ListView listView) {
// 获取ListView对应的Adapter
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
return;
}
int totalHeight = 0;
for (int i = 0, len = listAdapter.getCount(); i < len; i++) { // listAdapter.getCount()返回数据项的数目
View listItem = listAdapter.getView(i, null, listView);
listItem.measure(0, 0); // 计算子项View 的宽高
totalHeight += listItem.getMeasuredHeight(); // 统计所有子项的总高度
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight
+ (listView.getDividerHeight() * (listAdapter.getCount() - 1));
listView.setLayoutParams(params);
}
----------------------------------------------------------------------------------------
当ListView的item失去焦点时:
android:descendantFocusability="blocksDescendants"
android:focusable="false"