Recycler视图选择项目并保存选择

时间:2016-10-15 19:29:10

标签: android android-recyclerview

我有这个Recycler视图及其工作正常,但现在我需要当用户点击回收器中的项目突出显示该项目并打算进行另一项活动时,当回到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 个答案:

答案 0 :(得分:0)

单击某个项目时,保存其位置并将其传递给另一个活动。 返回原始活动后,返回保存的值,并在onBindViewHolder方法中,如果位置等于保存的值,则突出显示该项目。

答案 1 :(得分:0)

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

1。突出显示回收者视图项目
您可以通过多种方式实施recycler-view item listener,如描述here。实现后,从那里更改view背景颜色,如:

 @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时,显示所选项目为高亮显示
制作一个public static var。当您点击某个项目时 - 会将用户重定向到另一个activity将该项目ID分配给static var,现在在onBindViewHolder中始终检查列表项ID是否与{{{1}相同1}}如果是static var,则更改true的背景,如第1部分所述  确保在开始新view后不要完成当前activity