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