Android 从另一个类获取RecyclerView的项目位置
我有一个Android 从另一个类获取RecyclerView的项目位置,android,android-recyclerview,android-cardview,Android,Android Recyclerview,Android Cardview,我有一个cardwiew列表,其中包含大约20张使用RecyclerView和适配器制作的卡 单击卡片项目后,我希望它启动一个新的intent,其中包含另一个cardwiew列表。我可以这样做,但我也希望它设置卡的颜色取决于卡的位置点击 比如说- 如果单击了卡片项“红色”,它应该启动新的意向类,并将卡片颜色设置为“红色”(我可以定义它)。 与其他色卡项目类似 这可能吗?您只需从适配器获取卡视图的位置即可 将对您有所帮助。首先将您的颜色作为字符串传递给您的新活动包: Intent mIntent
cardwiew
列表,其中包含大约20张使用RecyclerView
和适配器制作的卡
单击卡片项目后,我希望它启动一个新的intent
,其中包含另一个cardwiew
列表。我可以这样做,但我也希望它设置卡的颜色取决于卡的位置点击
比如说-
如果单击了卡片项“红色”
,它应该启动新的意向类,并将卡片颜色设置为“红色”(我可以定义它)。
与其他色卡项目类似
这可能吗?您只需从
适配器
获取卡视图
的位置即可
将对您有所帮助。首先将您的颜色作为字符串传递给您的新活动包:
Intent mIntent = new Intent(mContext, YourNewActivity.class);
mIntent.putExtra("color", yourColorString);
startActivity(mIntent)
在您的新活动中,从包中获取颜色
String color = "#000";
Bundle bundle = getIntent().getExtras();
if(bundle != null){
color = bundle.getString(color,"#000");
}
在适配器构造函数中将颜色传递给适配器,并在适配器中找到卡视图并设置背景色,如下所示:
cardView.setBackgroundColor(Color.parseColor(color));
祝你好运。这样做……在适配器内部
@Override
public void onBindViewHolder(ViewHolder holder, final int position) {
//..... your rest code
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(context,SecondActivity.class);
intent.putExtra("CardPosition",position); //for positiion
intent.putExtra("CardColor",
list.get(position).getColor()); //for value
context.startActivity(intent);
}
});
}
在第二个活动中,您可以获得cardview的位置…根据您的要求更改方法您想在新活动中更改cardview的颜色还是原始活动?@NikoYuwono新活动
“CardPosition”
“CardColor”这些只是其他类的引用名称吗?没有putextra参数的名称…您可以在其他活动中使用这些名称获取此参数…如getArguments().getExtra(“CardPosition”);我可以在这里使用字符串数组吗?是的,如果您将字符串数组以捆绑方式传递,您可以在新活动中获得并使用它。但如果你传递字符串数组,我想你也需要传递一个位置给你的新活动。