Android 在循环视图中使用选定的位置项启动活动

Android 在循环视图中使用选定的位置项启动活动,android,sqlite,android-recyclerview,Android,Sqlite,Android Recyclerview,当应用程序再次启动时,如何使用循环视图的选定卡片项目启动活动。 详细信息: 我有三个活动:启动屏幕、卡片列表和卡片详细信息 卡片列表活动包含卡片列表。列表中的每一项都有菜单。菜单中有一个选项是“设置默认卡” 卡片详细信息此活动显示卡片的详细信息 问题: 现在,如果我选择了设置默认卡,则所选卡包含绿色边框 当我设置默认卡并退出我的应用程序时,所以下一步如果我打开我的应用程序,它将转到具有所选卡的卡详细信息活动 注意:我使用数据库存储卡详细信息和默认卡 我的代码: CardAdapter.cla

当应用程序再次启动时,如何使用循环视图的选定卡片项目启动活动。

详细信息:

我有三个活动:启动屏幕卡片列表卡片详细信息

  • 卡片列表活动包含卡片列表。列表中的每一项都有菜单。菜单中有一个选项是“设置默认卡”

  • 卡片详细信息此活动显示卡片的详细信息

问题:

现在,如果我选择了设置默认卡,则所选卡包含绿色边框

当我设置默认卡并退出我的应用程序时,所以下一步如果我打开我的应用程序,它将转到具有所选卡的卡详细信息活动

注意:我使用数据库存储卡详细信息和默认卡

我的代码:

CardAdapter.class

public class CardAdapter extends RecyclerView.Adapter<CardAdapter.CardViewHolder> {

    private static int lastCheckedPos = 0;
    private Context mContext;
    private ArrayList<Card> cardsList;
    boolean isError;

    public CardAdapter(Context mContext, ArrayList<Card> cardsList, String key) {
        this.key = key;
        this.mContext = mContext;
        this.cardsList = cardsList;
        notifyDataSetChanged();
    }

    @Override
    public CardViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_card, parent, false);
        return new CardViewHolder(view);
    }

    @Override
    public void onBindViewHolder(CardViewHolder holder, final int position) {

        final Card card = cardsList.get(position);
        databaseHandler = new DatabaseHandler(mContext);

     [enter image description here][1]
        //ustawienie zaznaczenia na wybranej pozycji
        if (position == lastCheckedPos) {

            holder.cardView.setBackgroundResource(R.drawable.bordercardview);

        } else {

            holder.cardView.setCardBackgroundColor(Color.WHITE);
            holder.menu.setOnClickListener(new View.OnClickListener() {

                Typeface custom_fonts = Typeface.createFromAsset(mContext.getAssets(), "fonts/OpenSans-Regular.ttf");
                Typeface custom_fonts_Bold = Typeface.createFromAsset(mContext.getAssets(), "fonts/OpenSans-Bold.ttf");

                @Override
                public void onClick(View v) {
                    PopupMenu popupMenu = new PopupMenu(mContext, v);
                    popupMenu.inflate(R.menu.cardmenu);
                    popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                        @Override
                        public boolean onMenuItemClick(MenuItem item) {
                            switch (item.getItemId()) {


                                    case R.id.defaultCard:

                                    int prePos = lastCheckedPos;
                                    lastCheckedPos = position;
                                    notifyItemChanged(prePos);
                                    notifyItemChanged(lastCheckedPos);

                                    break;
                            }
                            return false;
                        }
                    });
                    popupMenu.show();
                }
            });
        }

    }

    @Override
    public int getItemCount() {
        return cardsList.size();
    }

}
公共类CardAdapter扩展了RecyclerView.Adapter{ 私有静态int lastCheckedPos=0; 私有上下文; 私人ArrayList cardsList; 布尔isError; 公共CardAdapter(上下文mContext、ArrayList cardsList、字符串键){ this.key=key; this.mContext=mContext; this.cardsList=cardsList; notifyDataSetChanged(); } @凌驾 公共卡ViewHolder onCreateViewHolder(视图组父级,int-viewType){ View=LayoutFlater.from(parent.getContext()).flate(R.layout.item_card,parent,false); 返回新的CardViewHolder(视图); } @凌驾 BindViewHolder上的公共无效(CardViewHolder,最终int位置){ 最终卡片=卡片列表获取(位置); databaseHandler=新的databaseHandler(mContext); [在此处输入图像描述][1] //乌斯塔维尼·扎兹纳克泽尼亚·纳维布拉内伊·波兹吉 如果(位置==lastCheckedPos){ holder.cardView.setBackgroundResource(R.drawable.bordercardview); }否则{ holder.cardView.setCardBackgroundColor(颜色:白色); holder.menu.setOnClickListener(新视图.OnClickListener(){ Typeface custom_fonts=Typeface.createFromAsset(mContext.getAssets(),“fonts/OpenSans Regular.ttf”); Typeface custom_fonts_Bold=Typeface.createFromAsset(mContext.getAssets(),“fonts/OpenSans Bold.ttf”); @凌驾 公共void onClick(视图v){ PopupMenu PopupMenu=新的PopupMenu(mContext,v); 弹出菜单。充气(右菜单。卡片菜单); setOnMenuItemClickListener(新的popupMenu.OnMenuItemClickListener(){ @凌驾 公共布尔onMenuItemClick(菜单项){ 开关(item.getItemId()){ 案例R.id.defaultCard: int PREPS=最后检查的位置; lastCheckedPos=位置; 已更改的项目(PREPS); notifyItemChanged(lastCheckedPos); 打破 } 返回false; } }); show(); } }); } } @凌驾 public int getItemCount(){ 返回卡片列表。大小(); } }
创建recyclerView后,您可以通过以下方式移动到特定位置:

 recyclerView.getLayoutManager().scrollToPosition(position);

将您的lastCheckedPos存储到SharedReferences,并使用它填充适配器