Android ListView 总结
来源:互联网 发布:直销结算软件 编辑:程序博客网 时间:2024/05/17 21:45
1. 指定item 不能点击事件
覆写Adapter 的 isEnabled 方法:
@Override public boolean isEnabled(int position) { if(position == 4) { return false; } return super.isEnabled(position); }postion == 4, 是不能点击的,就是没有动画效果。
2. Item 的内部布局如果有CheckBox 之类需要响应
Item 的布局需要需要加入android:descendantFocusability="blocksDescendants" 这个属性,就可以响应子view 的事件。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:descendantFocusability="blocksDescendants" android:layout_height="wrap_content" android:gravity="center" android:minHeight="60dp"> <CheckBox android:id="@+id/task_complete" android:layout_width="wrap_content" android:layout_height="wrap_content" />...
3. ListView 的分类显示
主要是在根据position 不同在getview 的时候返回不同的view。
public class TaskListAdapter extends BaseAdapter { private Context mContext; private List<String> mTaskList; private List<String> mTaskList2; public TaskListAdapter() { super(); } public TaskListAdapter(Context context, List<String> data,List<String> data2) { mContext = context; mTaskList = data; mTaskList2 = data2; } @Override public int getCount() { return mTaskList.size() + 1 + mTaskList2.size(); } @Override public Object getItem(int position) { if(position == mTaskList.size()) return null; if(position < mTaskList.size()) { return mTaskList.get(position); } else { return mTaskList2.get(position - mTaskList.size() -1); } } @Override public long getItemId(int position) { return position; } @Override public View getView(final int position, View convertView, ViewGroup parent) { ViewHolder viewHolder = null; LayoutInflater layoutInflater = LayoutInflater.from(mContext); //if(position == mTaskList.size()) { // convertView = layoutInflater.inflate(R.layout.item_task_separator, null); //} //if(convertView == null) { viewHolder = new ViewHolder(); if(position == mTaskList.size()) { convertView = layoutInflater.inflate(R.layout.item_task_separator, null); } else { convertView = layoutInflater.inflate(R.layout.item_task_layout, null); viewHolder.title = (TextView) convertView.findViewById(R.id.task_title); viewHolder.desc = (TextView) convertView.findViewById(R.id.task_desc); viewHolder.due_date = (TextView) convertView.findViewById(R.id.task_due_date); viewHolder.due_time = (TextView) convertView.findViewById(R.id.task_due_time); viewHolder.complete = (CheckBox) convertView.findViewById(R.id.task_complete); if(true) { viewHolder.select = (CheckBox) convertView.findViewById(R.id.task_select); viewHolder.select.setVisibility(View.VISIBLE); } convertView.setTag(viewHolder); } //} else if(position != mTaskList.size()){ // viewHolder = (ViewHolder) convertView.getTag(); //} if(position != mTaskList.size()) { String taskItem = (String) getItem(position); viewHolder.title.setText(taskItem); //viewHolder.desc.setText(taskItem.desc); Calendar calendar = Calendar.getInstance(); //calendar.setTimeInMillis(taskItem.due_date); String formatDate = "MMM dd"; if(Locale.CHINA.getCountry().equals(Locale.getDefault().getCountry())) { formatDate = "MM月dd日"; } SimpleDateFormat format = new SimpleDateFormat(formatDate, Locale.getDefault()); Log.d("zhouyong", "calendar = " + calendar.toString()); Log.d("zhouyong","display name = "+Locale.getDefault().getCountry() + " "+Locale.CHINA.getCountry()); viewHolder.due_date.setText(format.format(calendar.getTime())); format = new SimpleDateFormat("a hh:mm", Locale.getDefault()); viewHolder.due_time.setText(format.format(calendar.getTime())); //viewHolder.complete.setChecked(taskItem.complete == 1 ? true : false); viewHolder.complete.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.d("zhouyong", "complete = " + ((CheckBox) v).isChecked()); } }); } return convertView; } private class ViewHolder { TextView title; TextView desc; TextView due_date; TextView due_time; CheckBox complete; CheckBox select; }}
4. ListView 默认显示在什么位置
mListView.setSelection(position); listview.post(new Runnable() { @Override public void run() { listview.smoothScrollToPosition(position); }});
在设置值adapter 之后调用,或者是adapter.notifyDataSetChanged() 之后调用。smoothScrollToPosition 有动画效果。
5...
阅读全文
0 0
- android Listview总结
- android-ListView总结
- Android笔记-ListView总结
- android listView 总结
- android:ListView使用总结
- Android ListView学习总结
- Android-ListView 学习总结
- android中的ListView总结
- Android ListView优化总结
- android listview的总结
- android listview使用总结
- Android笔记-ListView总结
- Android ListView使用总结
- 【Android 总结】listview 属性
- Android ListView优化总结
- Android ListView 控件总结
- android总结------ListView
- Android ListView 总结
- WIN10下配置服务器无法打开的问题
- javaSE之第一讲 成员变量.局部变量.匿名对象以及封装特性.构造函数知识点总结
- 关于游戏开发方面的科普性概述
- JDK动态代理源码及源码剖析之为什么只能代理接口
- Linux远程控制,传送文件,及文件的压缩打包的相关操作
- Android ListView 总结
- 第八周——项目三—顺序串算法
- C#常见面试题
- maven项目发布后lib下是空的
- java面试题(中)
- android 事件处理
- 在线安装Eclipse插件时,出现错误
- java面试知识点整理之扩展系列
- 递归查找子物体/获取子物体上组件