listview+edittext完美解決方案
通常如果listview中的item內容有edittext的時候,會出現很多問題。
主要有: 1.點選彈出編輯框,edittext會失去焦點。
2.輸入內容後,向下滑動因為listview的item重用機制,你在上面輸入的內容下面的item也會顯示。
3.輸入內容後,向下滑動再拉回來原來的資料消失。
4.在需要為edittext設定監聽時會出現卡的現象
下面我們直接程式碼來說:
viewHolder.editText.setOnTouchListener(new OnTouchListener() {
@SuppressLint("ClickableViewAccessibility")
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
if(event.getAction()==MotionEvent.ACTION_UP){
index=position;
}
return false;
}
});
viewHolder.editText.setOnFocusChangeListener(new OnFocusChangeListener() {
//設定焦點監聽,當獲取到焦點的時候才給它設定內容變化監聽解決卡的問題
@Override
public void onFocusChange(View v, boolean hasFocus) {
EditText et=(EditText) v;
if(mWatcher==null){
mWatcher=new myWatcher();
}
if(hasFocus){
et.addTextChangedListener(mWatcher);//設定edittext內容監聽
}else {
et.removeTextChangedListener(mWatcher);
}
}
});
viewHolder.editText.clearFocus();//防止點選以後彈出鍵盤,重新getview導致的焦點丟失
if (index != -1 && index == position) {
// 如果當前的行下標和點選事件中儲存的index一致,手動為EditText設定焦點。
viewHolder.editText.requestFocus();
}
viewHolder.editText.setText(text[position]);//這一定要放在clearFocus()之後,否則最後輸入的內容在拉回來時會消失
viewHolder.editText.setSelection(viewHolder.editText.getText().length());
// viewHolder.editText.addTextChangedListener(new myWatcher());//放棄直接的為每一個edittext設定監聽內容變化
class myWatcher implements TextWatcher{
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
text[index]=s.toString();//為輸入的位置內容設定陣列管理器,防止item重用機制導致的上下內容一樣的問題
}
}
相關文章
- Prometheus告警帶圖完美解決方案Prometheus
- React 服務端渲染方案完美的解決方案React服務端
- React 服務端渲染完美的解決方案React服務端
- Winform窗體圓角以及描邊完美解決方案ORM
- 移動端滾動穿透問題完美解決方案穿透
- Unity Android il2cpp的完美熱更解決方案UnityAndroid
- 2018年Ubuntu 下裝 QQ 比較完美的解決方案Ubuntu
- 網路直播平臺搭建,瀑布流佈局完美解決方案
- windows 電腦下使用pyenv安裝python太慢 完美解決方案WindowsPython
- 【轉】 android獲取裝置唯一標識完美解決方案Android
- 模切行業完美解決方案的模切ERP系統行業
- 海外靜態住宅IP代理:繞過地理限制的完美解決方案
- MySQL錯誤-this is incompatible with sql_mode=only_full_group_by完美解決方案MySql
- 完美解決流氓軟體主頁劫持的新方案,小白可用
- 微信小程式動態載入外部字型的完美解決方案微信小程式
- html轉PDF檔案,完美解決方案——jsPDF,htmltocanvas,pdfmake,wkhtmltopdf,TuesPechkin,snappyHTMLJSCanvasAPP
- csapp-attacklab(完美解決版)APP
- 完美解決 Uncaught SyntaxError: Unexpected token ‘<‘Error
- JavaScript魔法:線上Excel附件上傳與下載的完美解決方案JavaScriptExcel
- 企業辦公解決方案,完美覆蓋辦公室各個角落
- 小程式webview跳轉頁面後沒有返回按鈕完美解決方案WebView
- vue 使用 cos上傳,完美解決!!!!!Vue
- 解決方案| anyRTC金融音視訊解決方案
- 定位精準,輕鬆管理:HoudahGeo 6 for Mac 地理位置資訊完美解決方案Mac
- 完美解決方案-雪花演算法ID到前端之後精度丟失問題演算法前端
- 【Android Fragment】友盟統計 Fragment 頁面顯示隱藏的完美解決方案AndroidFragment
- 完美解決xhost +報錯: unable to open display
- UnexpectedRollbackException解決方案Exception
- 電腦提示0x000000a5藍色畫面完美解決方案詳細圖解步驟圖解
- 高併發解決方案詳解(9大常見解決方案)
- WPF中不規則窗體與WindowsFormsHost控制元件的相容問題完美解決方案WindowsORM控制元件
- Feast on Amazon 解決方案AST
- Redis bigkey解決方案Redis
- 前端整合解決方案前端
- 高可用解決方案
- minikube配置代理:解決方案以及解決思路
- 智慧停車場解決方案,反向尋車系統解決方案
- 從PDF到OFD,國產化浪潮下多種文件格式匯出的完美解決方案
- elasticsearch實戰—中文拼音A-Z排序(完美解決)Elasticsearch排序