【问题标题】:setText method not working for editText in listview after calling 'notifyDataSetChanged'调用“notifyDataSetChanged”后,setText 方法不适用于列表视图中的 editText
【发布时间】:2013-02-11 08:29:49
【问题描述】:

我正在使用 Eclipse 开发一个 android 应用程序。我有一个列表视图,其中每一行都包含一个 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 方法中工作。

提前致谢。

【问题讨论】:

    标签: android android-edittext settext notifydatasetchanged


    【解决方案1】:

    您可以使用另一种方法来做到这一点。

    您可能正在使用 ArrayList 比如说 mList 设置 ListView 适配器。

    现在在列表视图的onItemClick 侦听器中,您将获得在ListView 中单击的项目的位置。在onClick() 中,将值0 设置在arrayList 的那个位置,例如mList.set(position, 0)。然后调用 notifyDataChanged()

    【讨论】:

    • 我做不到。如果用户没有在文本字段中输入正确的值,则不应更改数组。我想在用户单击文本字段时设置文本。
    • @jjpp 在 onClick() 中简单检查 textField 是否设置正确,只有在设置正确时才更改 arrayList
    • 如果 textView 的正确设置是指整数,那么您可以设置 TextView 的属性,以便只能输入整数
    【解决方案2】:

    试试:

    所以这种行为的原因是当您调用 adapter.notifyDataSetChanged() 时,您的 View V 很有可能被回收,因此它不再指代被点击的那个。您真正想要做的是更改列表,以便在调用 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();
           }
     });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-05
      相关资源
      最近更新 更多