提问者:小点点

Recycler查看选择项并保存选择


我有这个回收视图和它的工作良好,但现在我需要当用户点击进入项目在回收突出显示项目和意图到另一个活动,当回到回收显示选择的项目仍然突出显示,只有一个项目可以选择?任何想法?

这是我的回收视图适配器

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() {
}}

共2个答案

匿名用户

让我们将问题分为3个子部分:

1.点击突出显示回收器-视图项
您可以通过多种方式实现回收器-视图项侦听器,如下所述。实现后,从那里更改viewbackground-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方法中突出显示该项目。