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重用機制導致的上下內容一樣的問題
}
}
相關文章
- React 服務端渲染方案完美的解決方案React服務端
- React 服務端渲染完美的解決方案React服務端
- Activity 與 Fragment 通訊(99%)完美解決方案Fragment
- QT使用scrollarea顯示圖片,完美解決方案QT
- HTML插入Flash的全相容完美解決方案-SWFObjectHTMLObject
- Winform窗體圓角以及描邊完美解決方案ORM
- 移動端滾動穿透問題完美解決方案穿透
- 網路綜合佈線實驗室--完美解決方案
- 新聞管理軟體的完美圖片解決方案 (轉)
- 企業辦公解決方案,完美覆蓋辦公室各個角落
- Unity Android il2cpp的完美熱更解決方案UnityAndroid
- 微信小程式動態載入外部字型的完美解決方案微信小程式
- Google zxing實現二維碼掃描完美解決方案Go
- linux 下解決 chm (windows help檔案)方案,接近完美(轉)LinuxWindows
- 網路直播平臺搭建,瀑布流佈局完美解決方案
- 模切行業完美解決方案的模切ERP系統行業
- 完美解決流氓軟體主頁劫持的新方案,小白可用
- 【轉】 android獲取裝置唯一標識完美解決方案Android
- 海外靜態住宅IP代理:繞過地理限制的完美解決方案
- windows 電腦下使用pyenv安裝python太慢 完美解決方案WindowsPython
- JavaScript魔法:線上Excel附件上傳與下載的完美解決方案JavaScriptExcel
- 完美解決myBase Desktop 破解
- 2018年Ubuntu 下裝 QQ 比較完美的解決方案Ubuntu
- css實現固定高度及未知高度文字垂直居中的完美解決方案CSS
- 小程式webview跳轉頁面後沒有返回按鈕完美解決方案WebView
- 定位精準,輕鬆管理:HoudahGeo 6 for Mac 地理位置資訊完美解決方案Mac
- html轉PDF檔案,完美解決方案——jsPDF,htmltocanvas,pdfmake,wkhtmltopdf,TuesPechkin,snappyHTMLJSCanvasAPP
- 關於檔案上傳元件國內外完美解決方案的調查元件
- 這款高顏值應用,簡直就是拖延症的完美解決方案 #iOSiOS
- MySQL錯誤-this is incompatible with sql_mode=only_full_group_by完美解決方案MySql
- vue 使用 cos上傳,完美解決!!!!!Vue
- 完美解決 Uncaught SyntaxError: Unexpected token ‘<‘Error
- ViewPager 禁止左右滑動完美解決Viewpager
- 通過註解完美解決混淆問題
- 解決方案| anyRTC金融音視訊解決方案
- 完美解決方案-雪花演算法ID到前端之後精度丟失問題演算法前端
- LAMP解決方案LAMP
- 完美解決xhost +報錯: unable to open display