如何从另一个模型中获取 EditText 的值/制作一个 o

Posted

技术标签:

【中文标题】如何从另一个模型中获取 EditText 的值/制作一个 o【英文标题】:How to get values of EditText from another model / Make an o 【发布时间】:2022-01-24 03:39:47 【问题描述】:

我正在尝试为回收列表项创建单击方法。 我发现您可以在您为 OnBindViewHolder 中的列表创建的适配器中创建它,并且它可以工作,但是,我无权访问使用适配器的 Activity 中的 EditTexts,我想知道是否有没有办法导入它们以在适配器中使用?提前谢谢你。

【问题讨论】:

你没有访问权限是什么意思?请发布相关代码,以便我们有一个工作的起点。 一般来说,一个好的方法是在视图层中不做任何此类事情。 ViewModel 可以访问该信息,因此您应该让您的 onClick 方法调用 ViewModel 并让它处理类似的事情。 【参考方案1】:

你可以做到,你必须为此使用接口

接口会将您的数据从适配器传递到具有该 EditText 的 Activity。 然后你相​​应地更新你的 EditText。

创建接口

   public interface DataTransferInterface 
     public void onItemClicked(String data);
   

在适配器中创建接口对象

DataTransferInterface dtInterface;

在适配器的构造函数中初始化它

public MyAdapter(DataTransferInterface dtInterface)    
   this.dtInterface = dtInterface;

当在适配器中单击任何项​​目时,将数据传递给 Activity

    item.setOnClickListener(new OnClickListener() 
        @Override
        public void onClick(View view) 
            dtInterface.onItemClicked("Data to be passed here");
        
    );

现在在你的活动中

像这样实现该接口:

public class MainActivity extends Activity implements DataTransferInterface 

当你在 Activity 中实现接口时,它会显示错误来实现其所需的方法。所以,

@Override
 public void onItemClicked(String Data) 
 // TODO Update your EditText Here
 
 

像这样初始化你的适配器

myAdapter = new MyAdapter(this);

如果您发现任何困难,您可以阅读更多here

【讨论】:

以上是关于如何从另一个模型中获取 EditText 的值/制作一个 o的主要内容,如果未能解决你的问题,请参考以下文章

如何从另一个布局中获取按钮的文本值?

从子 Activity 中获取 EditText 的值

ASP.NET MVC 如何通过 Id 从另一个模型中获取名称

如何获取listview的item中的内容

我如何传递从另一个模型获取的角色数组以在 laravel 中注册表单

如何从 alertDialog.setView(R.layout.some_layout) 获取 EditText 的值