![](/img/trans.png)
[英]editText.requestFocus not working after notifyDataSetChanged of ListView (edittext on outside of listview)
[英]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.