0

我正在使用 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 方法中工作。

提前致谢。

4

2 回答 2

0

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

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

现在,onItemClick在列表视图的侦听器中,您可以获得在ListView. 在数组列表中该位置的onClick()值,例如。然后调用 notifyDataChanged()0mList.set(position, 0)

于 2013-02-11T08:48:35.010 回答
0

尝试 :

所以这种行为的原因是当你调用 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();
       }
 });
于 2013-02-11T08:51:55.920 回答