2016-10-15 46 views
0

我有这个Recycler视图和它的工作良好,但现在我需要当用户点击进Recycler中的项目突出显示项目和意图到另一个活动,并且当回到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() { 
}} 

回答

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是否与static var相同如果它是true然后更改背景view,如第1部分
开始新的activity后,请务必不要完成当前的activity

+0

其工作突出回收查看项目,但第3步我不能理解它! – meladandroid

+0

当用户在'getView()'或'bindHindler()'内的'SharedPreferences'或静态变量...上点击一个'item'项目'id'时,检查该项目'id',如果itemId是等于最后选定的项目id,然后更改背景颜色,如
'if(viewHolder.itemId == myItemId){view.backgroundColor(Color.parseColor(“#eee”)); }' – samirk433

0

的活动时上的项目点击,保存它的位置,并把它传递给其他活动。 一旦返回到原始活动,返回保存的值和onBindViewHolder方法,如果位置等于保存的值,则突出显示该项目。

+0

嗯,你可以为此编写代码吗? – meladandroid