从适配器更新活动中的EditText

时间:2019-11-26 07:46:35

标签: android

如果我不得不提出一个问题,我觉得我的大脑已经停止工作了,但是这确实是。我有一个简单的Recyclerview适配器for (var i=0;i<TotalQuestionsCount;i++) { .... } ,具有以下public class RecentEmojiAdapter : RecyclerView.Adapter覆盖

OnCreateViewHolder

然后点击

public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType)
  {
   var listitem = LayoutInflater.From(parent.Context).Inflate(Resource.Layout.item_emoji, parent, false);
   TextView E_IMAGE = listitem.FindViewById<TextView>(Resource.Id.emoji_image);
       EmojiViewHolder view = new EmojiViewHolder(listitem)
       {
          EImage = E_IMAGE                  
       };
   listitem.Click += (sender, e) => { OnClick(view.ECode); };            
   return view;
  }  

工作正常,但我只是停留在如何访问private void OnClick(string T) { try { Log.Info(TAG, T); } catch(Exception X) { Log.Info(TAG, X.Message); } } 并使用EditText更新它的情况下-我的EditText.Append(string)在Main Activity中,RecyclerView在Fragment中:)

我做错了吗??

1 个答案:

答案 0 :(得分:1)

我假设您正在传递适配器构造函数上的上下文。您可以使用它并将其投射为您的活动。然后在MainActivity上公开公开您的EditText变量,以便适配器可以访问它。

Context mContext;
List<DataModel> mData;

public YourAdapter(Context context, List<DataModel> data){
    mContext = context;
    mData = data;
}

然后在您的OnClick上

MainActivity parentActivity = (MainActivity)mContext;
parentActivty.yourEditText.setText("Your text here")// Or do something about the edit text

然后在您的MainActivity上,公开声明editText

public EditText yourEditText;

在访问它之前,请确保已通过findViewById实例化了yourEditText。

我希望这会有所帮助。干杯!