【问题标题】:Recycler view select item and save the selection回收商查看选择项目并保存选择
【发布时间】:2016-10-15 19:29:10
【问题描述】:

我有这个 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() {
}}

【问题讨论】:

    标签: android android-recyclerview


    【解决方案1】:

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

    1.在点击时突出显示回收站视图项目
    您可以通过多种方式实现recycler-view item listener,如here 所述。实现后,从那里更改 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.返回回收站视图时,将所选项目显示为突出显示
    制作public static var。当您单击一个项目时 - 这会将用户重定向到另一个 activity 将该项目 ID 分配给该 static var ,现在在 onBindViewHolder 始终检查列表项目 ID 是否与 static var 相同,如果它是 true然后像第 1 部分一样更改 view 的背景。
    确保在开始新的 activity 后不要完成当前的 activity

    【讨论】:

    • 它的工作 Highlight recycler-view 项目,但第 3 步我无法理解!
    • 当用户点击item 时,将该项目id 保存在SharedPreferences 或静态变量中...在getView()bindHindler() 中检查该项目id,如果 itemId 等于最后选择的项目 ID,则更改背景颜色,如
      ` if (viewHolder.itemId==myItemId){view.backgroundColor(Color.parseColor("#eee")); }`
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多