我正在尝试将我的旧应用程序转换为新的 android Material design。但是在我的 onclick
事件中我无法使用我的 getSupportFragmentManager()
方法。我不知道是什么我在这里做错了吗..
public class DrawerListAdapter extends RecyclerView.Adapter<DrawerListAdapter.DrawerViewHolder> {
private Context context;
private Activity activity;
private LayoutInflater inflater;
List<info> data = Collections.emptyList();
public DrawerListAdapter(Context context, List<info> data) {
inflater = LayoutInflater.from(context);
this.data = data;
this.context = context;
}
@Override
public DrawerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.custome_row, parent, false);
DrawerViewHolder holder = new DrawerViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(DrawerViewHolder holder, int position) {
info current = data.get(position);
holder.title.setText(current.title);
holder.icon.setImageResource(current.iconId);
holder.setClickListener(new DrawerViewHolder.ClickListener() {
@Override
public void onClick(View v, int position, boolean isLongClick) {
switch (position) {
case 1:
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.content_frame, Fragment_home.newInstance(),
Fragment_home.TAG).commit();
break;
case 2:
break;
}
}
});
}
@Override
public int getItemCount() {
return data.size();
}
static class DrawerViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
TextView title;
ImageView icon;
private ClickListener clickListener;
public DrawerViewHolder(View itemView) {
super(itemView);
title = (TextView) itemView.findViewById(R.id.text_title);
icon = (ImageView) itemView.findViewById(R.id.imageView);
itemView.setOnClickListener(this);
}
/* Interface for handling clicks - both normal and long ones. */
public interface ClickListener {
/**
* Called when the view is clicked.
*
* @param v view that is clicked
* @param position of the clicked item
* @param isLongClick true if long click, false otherwise
*/
public void onClick(View v, int position, boolean isLongClick);
}
/* Setter for listener. */
public void setClickListener(ClickListener clickListener) {
this.clickListener = clickListener;
}
@Override
public void onClick(View view) {
clickListener.onClick(view, getPosition(), false);
}
}
}
最佳答案
我建议使用 Android 设计支持库中的 NavigationView 类设置您的抽屉,它还允许从 xml 资源扩展菜单。然后,您将通过注册 NavigationView.NavigationItemSelectedListener
关于java - Android Material Design 抽屉导航 setClickListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27741507/