Android listView典型错误分析(经验体会)
16lz
2021-01-23
1.无法获得一个view的onClick,onLongClick等点击事件,是因为其中的特殊子控件,默认获得了焦点,应该设置android:focusable="false" a.如下面这样的List,无法响应list的onItemClick,( 是因为其中的特殊子控件button,默认获得了焦点,应该设置android:focusable="false") b.ExpandableListView ,不响应onChildClick() 还有一个可能原因是adapter中的isChildSelectable返回了false,请重载返回true @Override public boolean isChildSelectable(int groupPosition, int childPosition) { // TODO Auto-generated method stub return true; } 2.无法使得一个view在多次刷新时保持稳定,出现了怪异的自动变化 getView使用了convertView(不判断convertView是否为null,而重新创建,可能导致内存资源浪费),convertView中的onChange事件同时有改变自己的情况,就会导致不稳定。比如你在checkbox的setOnCheckedChangeListener监听到变化后重设了自己,将会再一次进入本onCheckedChanged()。如果这个循环不能进入一个不change自身的分支,就是死循环.如下为一个EditView添加的观察者 TextWatcher mTextWatcher = new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void afterTextChanged(Editable s) { mEditText.setText(""); } }
更多相关文章
- 关于android的imagebutton,imageview等无文本控件警告的解决办法
- Android ListView/ListActivity点击长按事件
- 关于android软键盘enter键的替换与事件监听
- Android 的事件分发机制