Android Material Design导航抽屉setClickListener

杂凑

我试图将我的旧应用程序转换为新的android材质设计。但是在我的情况onclick下,我无法使用我的getSupportFragmentManager()method.I不知道我在这里做错了什么。

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);

        }
    }
}
朱利安·奥斯(Julian Os)

我建议您使用Android设计支持库中的NavigationView类来设置您的抽屉,该类还允许使用xml资源填充菜单。然后,您可以通过注册一个NavigationView.NavigationItemSelectedListener

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章