編輯:關於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"
RecyclerView已經出來很久了,許許多多的項目都開始從ListView轉戰RecyclerView,那麼,上拉加載和下拉刷新是一件很有必要的事情。在ListVie
近日,遇到一個Dialog半透明背景消失的問題,背景需求是自定義Dialog實現警告提示框:// 初始化警告彈出框 alertDialog = new EmpAlertV
自繪制Android界面核心類圖。入門Android時,會看到過一張系統架構圖,從那張圖可以知道Android系統自上到下被劃分了幾個層次(具體每個層次的職責定義不再概述
三星手機連接電腦只顯示充電狀態解決辦法: 1、打開智能USB模式。如果手機安裝了手機助手,說明沒有打開數據開關。打開方式為找到手機內的:設置—