如何在 android 中的适配器 class 中显示弹出菜单
How to display a pop menu in an adapter class in android
我是 android 开发的新手,我有一个使用适配器 class 填充的回收器视图。这里的问题是 在用户单击 textViews 时实现弹出菜单。我只能访问适配器 class 中的 textView,因为它没有 activity,所以我很难实现弹出菜单。我搜索了这个网站,发现了类似的链接,但他们的解决方案对我没有用。这就是我注册的原因,也许你们 me.I 已经尝试了两个晚上,但我似乎找不到解决问题的方法。在这个适配器 class 中实现弹出菜单时,我总是遇到错误,它似乎从来没有工作过,而且非常令人沮丧。
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private List<String> values;
public class ViewHolder extends RecyclerView.ViewHolder {
public TextView txtHeader;
public View layout;
public ViewHolder(View v) {
super(v);
layout = v;
txtHeader = (TextView) v.findViewById(R.id.postTitle);
}
}
public void add(int position, String item) {
values.add(position, item);
notifyItemInserted(position);
}
public void remove(int position) {
values.remove(position);
notifyItemRemoved(position);
}
public MyAdapter(List<String> myDataset, Context context) {
values = myDataset;
this.context = context.getApplicationContext();
}
@Override
public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
View v = inflater.inflate(R.layout.postlayout2, parent, false);
ViewHolder vh = new ViewHolder(v);
return vh;
}
@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
final String name = values.get(position);
try {
final String postTitle;
postTitle = name;
holder.txtHeader.setText(postTitle);
// I would like to implement a popup menu display here
} catch (Exception e) {
Log.d("KOPe", "3: " + e.getMessage());
}
}
@Override
public int getItemCount() {
return values.size();
}
}
提前致谢。
在 ViewHolder class bind()
方法中使用它:
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(textView.getContext());
alertDialog.setTitle("Message");
alertDialog.setMessage(Html.fromHtml("<small> successfully done </small>"));
alertDialog.setNegativeButton("no",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
alertDialog.setPositiveButton("yes",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
//perform action
Log.d(TAG,"done");
}
});
final AlertDialog alert = alertDialog.create();
alert.show();
}
});
我是 android 开发的新手,我有一个使用适配器 class 填充的回收器视图。这里的问题是 在用户单击 textViews 时实现弹出菜单。我只能访问适配器 class 中的 textView,因为它没有 activity,所以我很难实现弹出菜单。我搜索了这个网站,发现了类似的链接,但他们的解决方案对我没有用。这就是我注册的原因,也许你们 me.I 已经尝试了两个晚上,但我似乎找不到解决问题的方法。在这个适配器 class 中实现弹出菜单时,我总是遇到错误,它似乎从来没有工作过,而且非常令人沮丧。
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private List<String> values;
public class ViewHolder extends RecyclerView.ViewHolder {
public TextView txtHeader;
public View layout;
public ViewHolder(View v) {
super(v);
layout = v;
txtHeader = (TextView) v.findViewById(R.id.postTitle);
}
}
public void add(int position, String item) {
values.add(position, item);
notifyItemInserted(position);
}
public void remove(int position) {
values.remove(position);
notifyItemRemoved(position);
}
public MyAdapter(List<String> myDataset, Context context) {
values = myDataset;
this.context = context.getApplicationContext();
}
@Override
public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
View v = inflater.inflate(R.layout.postlayout2, parent, false);
ViewHolder vh = new ViewHolder(v);
return vh;
}
@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
final String name = values.get(position);
try {
final String postTitle;
postTitle = name;
holder.txtHeader.setText(postTitle);
// I would like to implement a popup menu display here
} catch (Exception e) {
Log.d("KOPe", "3: " + e.getMessage());
}
}
@Override
public int getItemCount() {
return values.size();
}
}
提前致谢。
在 ViewHolder class bind()
方法中使用它:
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(textView.getContext());
alertDialog.setTitle("Message");
alertDialog.setMessage(Html.fromHtml("<small> successfully done </small>"));
alertDialog.setNegativeButton("no",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
alertDialog.setPositiveButton("yes",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
//perform action
Log.d(TAG,"done");
}
});
final AlertDialog alert = alertDialog.create();
alert.show();
}
});