1. 程式人生 > >探討Android開發ListView的Item裡包含EditText控制元件遇到的一些問題

探討Android開發ListView的Item裡包含EditText控制元件遇到的一些問題

相信很多程式猿用到ListView都會遇到很多的問題,這裡我們就討論下ListView每個條目包含有EditText時遇到的問題。
主要有:
1,點選編輯框時,焦點看不到,即失去焦點,或不彈出軟鍵盤。
2,這個編輯框輸入內容時,由於ListView的重用機制滑動到下面會重複出現該內容。
3,如果設定有內容變化監聽,輸入的內容滑動後再拉回來內容消失。
4,EditText設定監聽時會卡頓或item跳躍狀況。

下面我參考網上的,直接上我自己寫的程式碼,並且有相應的一些註釋,相信能看的明白。

viewHolder.et_content.setOnTouchListener(new View.OnTouchListener() {
                @Override
public boolean onTouch(final View v, MotionEvent event) { if(event.getAction() == MotionEvent.ACTION_UP) { curPosition = position; // 記錄當前編輯EditText所在的位置 v.requestFocus(); } return
false; } }); viewHolder.et_content.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { // 設定焦點監聽,當獲取到焦點時才給他設定內容變化監聽,解決卡頓問題 EditText editText = (EditText) v; if
(hasFocus) { // 獲取焦點時才設定內容變化監聽 editText.addTextChangedListener(textWatcher); } else { editText.removeTextChangedListener(textWatcher); } } }); viewHolder.et_content.clearFocus(); // 防止點選後彈出鍵盤,重新getView焦點消失 // if(curPosition == position) { // 如果當前下標和點選觸碰時的下標一致,則手動設定焦點 // viewHolder.et_content.requestFocus(); // } viewHolder.et_content.setText(itemList.get(position).getValue()); // 得放在clearFocus之後,否則輸入的內容在拉回來時會消失 // viewHolder.et_content.setSelection(viewHolder.et_content.getText().length());
private TextWatcher textWatcher = new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

        }

        @Override
        public void afterTextChanged(Editable s) {
            itemList.get(curPosition).setValue(s.toString()); // 把當前輸入的內容儲存進當前位置的陣列內
        }
    };

相關推薦

探討Android開發ListView的Item包含EditText控制元件遇到的一些問題

相信很多程式猿用到ListView都會遇到很多的問題,這裡我們就討論下ListView每個條目包含有EditText時遇到的問題。 主要有: 1,點選編輯框時,焦點看不到,即失去焦點,或不彈出軟鍵盤。 2,這個編輯框輸入內容時,由於ListView的重用機

android開發:自定義組合控制元件

內容介紹 本文記錄,自定義組合控制元件,為了可以程式碼複用,減少程式碼量 配置控制元件屬性檔案 開啟res/values/目錄下的arss.xml檔案,新增下面屬性程式碼,如果沒有建立arrs.xml檔案。 <?xml version="1.0" enc

Android開發之RadioGroup與RadioButton控制元件使用

      RadioButton即單選按鈕,它在開發中提供了一種“多選一”的操作模式,是Android開發中常用的一種元件,例如在使用者註冊時,選擇性別時只能從“男”或者“女”中選擇一個。與Web開發不同的是,在Android中可以使用RadioGroup來定義單選按鈕元件

【安卓學習筆記】Android Studio第3課——EditText控制元件

EditText和TextView很相似,主要不同的是EditText是使用者可以在上面編輯本文的,而TextView只能用app本身去改變和顯示。做了一個簡單的登入介面:xml程式碼如下<?xml version="1.0" encoding="utf-8"?>

Android 開發,JAVA動態設定控制元件大小

在我們的實際android開發中,我們經常需要對控制元件進行設定。在xml中設計大小,我們大家都很熟悉。那麼,使用java動態設定控制元件大小,該如何寫呢。以下是我寫的方法: /** * 設定控制元件大小 * @param view 控制元件

Android開發筆記之自定義控制元件(物流時間軸的實現)

最近修改專案遇到檢視物流這個需求,經過一個下午的時間的終於搞定,趁著這個時間點,趕快把這個功能抽取出來,方便大家以後開發的需要,幫助到更多的人 先看效果圖,如下 看完之後,分析可知道,主要是兩部分,一個頭部和一個body. 那我們最主要的工作就是bod

android開發中遇到的WebView控制元件相應的總結

1.網路訪問許可權 在AndroidManifest.xml 中新增網路訪問許可權: android.permission.INTERNET 2.設定WebView要顯示的網頁 //首先例項化控制元件 WebView webView = (

Android開發學習筆記:為動態新增的EditText控制元件繫結值改變監聽事件

LinearLayout LP=new LinearLayout(context); final EditText editText=new EditText(context); //editTex

Android開發中,使用 EditText 輸入內容,如何進行一鍵清空內容處理

本文僅為個人的處理方式,希望能對您有所幫助,歡迎各位留言指正,抱拳了 1、text.xml示例: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://s

Android開發之輸入框EditText介紹

這篇文章主要為大家詳細介紹了Android佈局之輸入框EditText設計,具有一定的參考價值,感興趣的小夥伴們可以參考一下 現在先簡單介紹一下技術點: 1.如何使用圓角輸入框和按鈕背景 2.如何實現“手機號”、“密碼”後面的豎線 3.如何巢狀輸入框的佈局 4.

android開發之在activity中控制另一個activity的UI更新

第一種方法: 遇到一個問題,需要在一個activity中控制另一個acitivity做一些更新,沒想到傳遞handler的方法,通過以下方式解決。 1.在MyAPP中定義屬性handler package jason.com; import jason.com.MasterAc

Android開發——ProgressBar進度條進度控制

今天花了很多時間給新電腦配置環境,主要是之前的eclipse版本有問題導致配置好所有的開發環境後不能新建專案,一建專案就卡了軟體,這是個尷尬的問題。最開始我還以為是sdk或者adt出了問題,後來發現並不是,換了一遍一樣出錯,然後換了一個eclipse,終於可以開始快樂的學習

Android中監聽Edittext控制元件於鍵盤中按下確認事件OnEditorActionListener

背景 Edittext作為一個常見控制元件,很多時候都有監聽鍵盤確認就執行指定邏輯的需求 實現 這個很簡單嘛,Edittext自帶有鍵盤按下事件監聽,就是OnEditorActionListener了,用就對了 問題 使用中發現,的確可以監聽鍵盤確認事

Android 自定義Dialog 裡面有EditText控制元件點選關閉輸入法失效的問題

在做一個專案的時候,自定義額了一個Dialog 裡面有取消,儲存按鈕,以及EditText,在輸入法彈出的時候,點選取消按鈕,自定義dialog對話方塊關閉了,但是輸入法始終關閉不了,在網上找了很多方法,都不能很好的解決,輸入法不能關閉的問題。    最好找到的解決辦法是

AndroidEditText控制元件的幾種使用方法

       2. MultiAutoCompleteTextView是AutoCompleteTextView的子類,它是對AutoCompleteTextView的擴充套件,但是你必須提供一個 MultiAutoCompleteTextView.Tokenizer來區分不同的字串,通過使用這個方法:set

Android學習筆記 —— Android 開發中,限制 EditText 輸入框不能輸入中文(漢字)

今天在練習開發一個小專案的時候,需要限制 EditText 輸入框不能輸入中文(漢字),在網上找了很多例子,  結合自己的實際,終於完成了這一功能。現在把程式碼記錄下來,方便以後查詢! 首先是xml佈

Android開發 activity面的WebView載入js呼叫windows.location.reload()會彈出瀏覽器的解決方法

原文地址:http://www.it1352.com/131085.html 重寫WebView的WebViewClient public class MyWebViewClient extends WebViewClient { @Overri

安卓Android控制元件ListView巢狀EditText控制元件

實現效果: 效果就是這樣,我們要實現這樣的效果,其實思路就是: 1、我們要記錄下按鈕的狀態,同時儲存文字框。 2、主要是在BaseAdapter中進行監聽。 class MyAdapter extends BaseAdapter{ private Map<Int

android如何為listview的每項中edittext控制元件新增textwacher

listview中的每項都有一個edittext,而且現在需要實時監聽該edittext的輸入,在listview的外部進行改變(例如使用者修改單價,外部的總價需要變化) 新增監聽器的程式碼: public View getView(final int position,

android 底部Dialog面的EditText點選軟鍵盤頂起Dialog

最近專案需求要求做一個底部彈窗大概螢幕的1/3,上面有一個EditText,點選之後Dialog被這個輸入法擋住,現在要求Dialog隨之軟鍵盤被頂起。程式碼如下: Dialog: final View view = LayoutInflater.from(this).