从android中的对话框更改TextView文本

Posted

技术标签:

【中文标题】从android中的对话框更改TextView文本【英文标题】:Changing TextView text from dialog in android 【发布时间】:2015-07-05 16:36:19 【问题描述】:

我有一个 ListView 有项目(每个都有 Button 编辑和 TextView 显示标题)。我已经实现了自定义适配器来显示这种结构。

单击编辑按钮时,我会显示一个带有EditText 和确定按钮的对话框。用户可以在EditText 中输入所需的名称,并且该文本应更改ListView 中的标题。

我的代码示例是,

mListViewItemsAccCat.setOnItemClickListener(new AdapterView.OnItemClickListener() 

    final TextView textviewTitle = (TextView)view.findViewById(R.id.textTitle);

    Button objButtonEdit = (Button) view.findViewById(R.id.btnEdit);
        objButtonEdit.setOnClickListener(new View.OnClickListener() 

        @Override
        public void onClick(View v)    
            // here displaying dialog and imageButton is OK button
            final EditText editTextTitle = (EditText) dialogEdit.findViewById(R.id.etTitle);
            ImageButton imageButtonOK = (ImageButton) dialogEdit.findViewById(R.id.btnOK);
            imageButtonOK.setOnClickListener(new View.OnClickListener() 

            @Override
                public void onClick(View v) 
                String strNewTitle = editTextTitle.getText().toString().trim();
                textviewTitle.setText(strNewTitle);
                
            );
        
    );
);

此处ListView 项目的文本应更改为strNewTitle。但它没有改变。我哪里错了?

更新:我检查了调试。 TextView 的文本正在内部更改,但未显示。 (TextViewmText 具有新值,但在 UI 中仍显示旧值。

【问题讨论】:

可能是最终声明.. 尝试在外部将其定义为没有最终声明的全局变量.. private TextView textviewTitle;然后在您的 OnClicklistener 中: textviewTitle = (TextView)view.findViewById(R.id.textTitle); @Wicked161089:不工作。 您是否尝试过如下所述在 OnClick 方法中的 setText() 之后调用 Adapter.notifyDataSetChanged()? 执行此操作:您将拥有字符串数组,编辑项目后,更改数组中的项目文本,然后使用 notifyDataSetChanged()。 【参考方案1】:

您是否在您的adapter.getView 函数中使用了convertView?您的 getView 函数中的代码是什么?在你的imageButtonOK的onClickListener中,不要直接改变TextView的内容,你应该改变你模型中的数据,然后调用adapter.notifyDataChanged()函数。

【讨论】:

以上是关于从android中的对话框更改TextView文本的主要内容,如果未能解决你的问题,请参考以下文章

Android TextView中的下划线和更改文本颜色[重复]

可以从对话框textview获取文本,但无法从对话框edittext获取文本

从ArrayAdapter每毫秒更新Android ListView中的一行

Android IME:显示一个自定义弹出对话框(如 Swype 键盘),可以在 TextView 中输入文本

在 Android 中,如何从 AsyncTask 更改 TextView? [复制]

更改 android studio 中的 textview 可见性