編輯:關於Android編程
Android ListView對於單純列表展示是很好用的,但是一旦牽扯到對listView進行操作就會遇到各種各樣的問題。比如保存Checkbox狀態與item復用的沖突、遇到可獲取焦點的控件比如說button、edxttext等與listView本身的點擊事件沖突等。對於後者,這裡不研究原因,只提供解決方案。
如果listView之中只有button這樣會搶奪焦點的控件,最好的建議是直接把button換成Textview,直接規避焦點問題。
如果有些產品經理要求在listview的item中提供復雜操作,比如輸入、單選復選等,這裡提供一個簡單的同時響應按鈕控件,並且響應listView的onItemClick事件的解決方法:為整個ListItem添加OnTouch事件,在事件中將所有可能搶奪焦點的控件設置為不可獲取焦點。這樣就可以保證liistView響應OnItemClick事件,再對每個可能獲取焦點的控件設置OnTouch事件,在之中將其設置為可獲取焦點,注意對Button等在手指離開的時候要將其失去焦點。
具體代碼如下
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
if (view instanceof EditText) {
//EditText設置為可焦點
EditText editText = (EditText) view;
editText.setFocusable(true);
editText.setFocusableInTouchMode(true);
} else if(view instanceof Button || view instanceof RadioButton ) {
//設置為可焦點,手指抬起時設為不可焦點
if(motionEvent.getAction() == MotionEvent.ACTION_UP){
view.setFocusable(false);
view.setFocusableInTouchMode(false);
}else{
view.setFocusable(true);
view.setFocusableInTouchMode(true);
}
}else {
ViewHolder holder = (ViewHolder) view.getTag();
//將所有有可能獲取焦點的控件的setFocusable和setFocusableInTouchMode方法設為false
setEditTextFoucsableFalse(holder);
}
return false;
}
注:如果存在EditText,為了保證輸入法正常彈出,需要設置android:windowSoftInputMode="adjustPan"
Android RecyclerView實現下拉刷新和上拉加載
RecyclerView已經出來很久了,許許多多的項目都開始從ListView轉戰RecyclerView,那麼,上拉加載和下拉刷新是一件很有必要的事情。在ListVie
Android開發中Dialog半透明背景消失
近日,遇到一個Dialog半透明背景消失的問題,背景需求是自定義Dialog實現警告提示框:// 初始化警告彈出框 alertDialog = new EmpAlertV
自繪制Android界面核心類圖
自繪制Android界面核心類圖。入門Android時,會看到過一張系統架構圖,從那張圖可以知道Android系統自上到下被劃分了幾個層次(具體每個層次的職責定義不再概述
三星手機連接電腦只顯示充電狀態怎麼辦
三星手機連接電腦只顯示充電狀態解決辦法: 1、打開智能USB模式。如果手機安裝了手機助手,說明沒有打開數據開關。打開方式為找到手機內的:設置—