如果我不得不提出一个问题,我觉得我的大脑已经停止工作了,但是这确实是。我有一个简单的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中:)
我做错了吗??
答案 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。
我希望这会有所帮助。干杯!