我有这个回收视图和它的工作良好,但现在我需要当用户点击进入项目在回收突出显示项目和意图到另一个活动,当回到回收显示选择的项目仍然突出显示,只有一个项目可以选择?任何想法?
这是我的回收视图适配器
public class ScreenRecyclerAdapter extends RecyclerView.Adapter<ScreenRecyclerAdapter.ViewHolder> {
Context context;
int image_list[];
public ScreenRecyclerAdapter(int[] image_list, Context context){
super();
this.image_list = image_list;
this.context = context;}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.screen_items, parent, false);
ViewHolder viewHolder = new ViewHolder(v);
return viewHolder;}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
Picasso.with(context).load(image_list[position]).into(holder.image_view_screen_item);
}
@Override
public int getItemCount() {
return image_list.length;
}
class ViewHolder extends RecyclerView.ViewHolder{
ImageView image_view_screen_item;
public ViewHolder(View itemView) {
super(itemView);
image_view_screen_item = (ImageView) itemView.findViewById(R.id.image_view_screen_item);
image_view_screen_item.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(context, ImagePager.class);
context.startActivity(i);
image_view_screen_item.setSelected(true);
}
});
}}}
这是回收者的活动
public class ScreensActivity extends AppCompatActivity {
RecyclerView image_recyclerView;
RecyclerView.LayoutManager image_recyclerViewlayoutManager;
RecyclerView.Adapter image_recyclerViewadapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_screens);
int image_list [] = {R.mipmap.ic_launcher,R.mipmap.ic_launcher, R.mipmap.ic_launcher};
image_recyclerView = (RecyclerView) findViewById(R.id.image_recyclerView);
image_recyclerView.setHasFixedSize(true);
image_recyclerView.setSelected(true);
image_recyclerViewlayoutManager = new LinearLayoutManager(this);
image_recyclerView.setLayoutManager(image_recyclerViewlayoutManager);
image_recyclerViewadapter = new ScreenRecyclerAdapter(image_list, this);
image_recyclerView.setAdapter(image_recyclerViewadapter);}
@Override
public void onBackPressed() {
}}
让我们将问题分为3个子部分:
1.点击突出显示回收器-视图项
您可以通过多种方式实现回收器-视图项侦听器
,如下所述。实现后,从那里更改view
background-Color,如下所示:
@Override
public void onItemClick(View view, int position) {
view.setBackgroundColor(Color.parseColor("#eee"));
//
}
2.点击重定向到另一个活动
在onClick
方法中,您可以启动一个新活动,例如:
@Override
public void onItemClick(View view, int position) {
// check for item
Intent intent = new Intent(mContext);
startActivity(intent);
}
3.当返回Recycler-view时,将选定的项目显示为突出显示
创建一个公共静态var
。当您单击一个项目-这将重定向用户到另一个活动
时,将该项目id分配给该静态var
,现在在onBindViewHolder
中始终检查列表项id是否与静态var
相同,如果它是true
,然后更改视图
的背景,如第1部分所述。
确保在启动新的活动
后不要完成当前的活动
。
单击一个项目时,保存其位置并将其传递给另一个活动。一旦返回到原始活动,就会返回保存的值,如果位置等于保存的值,则在onBindViewHolder方法中突出显示该项目。