簡體   English   中英

調用“ notifyDataSetChanged”后,setText方法不適用於列表視圖中的editText

[英]setText method not working for editText in listview after calling 'notifyDataSetChanged'

我正在使用eclipse開發一個android應用程序。 我有一個listview,它的每一行都包含一個EditText。 當我單擊EditText時,我想做兩件事。

1:用我的數據數組中的文本重新加載所有EditText。

2:將單擊的EditText的文本設置為常量字符串(例如“ 0”)。

為此,我將下面的onclicklisetner用於EditText。

  myEdittext.setOnClickListener(new View.OnClickListener() 
{
     @Override
      public void onClick(View v) 
       {
        adapter.notifyDataSetChanged();//adapter is my arrayadapter of the listview
        EditText clickedText = (EditText)v;  
        clickedText.setText("0");
       }
 });

如您所見,我正在使用“ notifyDataSetChanged”方法在列表視圖中重新加載EditText,並使用“ setText”方法將單擊的EditText文本設置為“ 0”。

但是“ setText”方法不起作用。 如果我注釋'adapter.notifyDataSetChanged()'行,則'setText'方法有效。

我也嘗試通過延遲后調用setText方法來執行此操作(以檢查notifyDataSetChanged是否正在啟動新線程),但是失敗了。

如何使兩種方法都可以在我的onClick方法中使用。

提前致謝。

您可以使用另一種方法來做到這一點。

您可能會使用ArrayList例如mList)來設置ListView適配器。

現在,在列表視圖的onItemClick偵聽器中,您將獲得在ListView單擊的項目的位置。 onClick() ,在arrayList的該位置設置值0 ,例如mList.set(position, 0) 然后調用notifyDataChanged()

嘗試:

因此,發生這種現象的原因是,當您調用adapter.notifyDataSetChanged()時,很有可能您的View V被回收,因此不再引用被單擊的ViewV。 您真正想要做的是更改列表,以便在調用notifyDataSetChanged時將相應地加載所有值。

請分享您的適配器代碼。

  myEdittext.setOnClickListener(new View.OnClickListener() 
{
     @Override
      public void onClick(View v) 
       {
        //adapter is my arrayadapter of the listview
        //EditText clickedText = (EditText)v;  
        //clickedText.setText("0");

         //Do some thing to change the adapter data list.
         adapter.notifyDataSetChanged();
       }
 });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM