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...




原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 闪了腰怎么办一动就疼 窗户的把手断了怎么办 窗户寸漏不了水怎么办 窗户打开关不上怎么办 新装修的房子有甲醛怎么办 橄榄核上油花了怎么办 虫子飞到耳朵里怎么办 手被虫子咬肿了怎么办 梦见牙掉出血该怎么办 黑户急需5万块钱怎么办 家里欠了好多钱怎么办 欠好多网贷我该怎么办 外面欠了很多钱怎么办 欠了好多网贷怎么办 欠那么多钱我该怎么办 急用钱怎么办谁给指条路 晚上睡不着觉怎么办白天又醒不来 胃疼了好几天怎么办 手机移动卡怎么办副卡 大学我好累我怎么办 感觉婚姻很累了怎么办 一个人的心累了怎么办 头被凉水激着了怎么办 人一但懒惰了怎么办 太懒了怎么办都不想活 和老公和不来该怎么办 摩拜忘记关锁怎么办 绿萝叶子变软了怎么办 水痘疫苗打了3次怎么办 免疫组化p16阳性怎么办 乙肝五项25为阳怎么办 苏宁快递丢件了怎么办 新房苯超标10倍怎么办 结婚后遇到真爱怎么办 除皱针眉毛上扬怎么办 玩游戏充钱后悔怎么办 我被欺骗了感情怎么办 有隐私被威胁了怎么办 在微信上被威胁怎么办 别人恐吓我我该怎么办 警属受到威胁该怎么办