2014-10-27 22 views
0

我有一个自定义列表视图和一个OnItemClickListener。我有一个TextView listViewRightText变量,它跟踪listview每一行右侧的textView。Android虚拟键盘和监听器恢复值?

这个想法是有一个AlertDialog与TextView,当用户点击确定,listViewRightText项目将改变值。这是该部分的代码。

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View view, 
           int position, long id) { 
.... 

final EditText input = new EditText(ActivityMainScreen.this); 
       input.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL); 

       new AlertDialog.Builder(ActivityMainScreen.this) 
         .setTitle("Enter " + listViewLeftText.getText()) 
         .setView(input) 
         .setPositiveButton("Cancel", new DialogInterface.OnClickListener() { 

          public void onClick(DialogInterface dialog, int whichButton) { 
           // Do Nothing 
           } 
         }).setNegativeButton("Ok", new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, int whichButton) { 
          listViewRightText.setText(input.getText()); 

          } 

       }).show(); 

这在使用硬件键盘时在仿真器上按预期工作。

我使用虚拟键盘在我的手机上测试过它,并注意到新值将在几分之一秒内正确显示,然后恢复(淡入)旧值。

如果启用虚拟键盘,模拟器中会发生同样的事情。

我试过在按下对话框上的“确定”之前没有在虚拟键盘上击中“完成”/击中“完成”,并且这是相同的行为。

我谷歌搜索,没有遇到任何关于此事。任何人都知道发生了什么事?

回答

0

我不知道为什么这是与硬件键盘一起工作,但我发现它不能与虚拟键盘一起工作的原因是我需要通过自定义适配器设置文本TextView与设置它直。