2016-10-15 3 views
0

Ich habe diese Recycler-Ansicht und ihre Arbeit gut, aber jetzt brauche ich, wenn der Benutzer in das Recycler Element klicken Sie auf das Element und die Absicht zu einer anderen Aktivität, und wenn zurück zum Recycler zeigen Der ausgewählte Artikel, der noch hervorgehoben werden kann und nur einen Artikel auswählen kann? irgendeine Idee ?Recycler View Artikel auswählen und speichern Sie die Auswahl

das ist mein Recycler Ansicht Adapter

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); 
      } 
     }); 
    }}} 

und dies ist die Aktivität von Recycler

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

Antwort

0

ist die Frage in 3 Unterteile Lassen Sie teilen:

1. Markieren Sie Recycler-Ansicht Artikel vom Fass
Sie recycler-view item listener auf vielfältige Weise implementieren kann, als here beschreiben. Sobald Sie es implementieren, ändern view Hintergrund-Farbe von dort wie:

@Override 
public void onItemClick(View view, int position) { 
    view.setBackgroundColor(Color.parseColor("#eee")); 
    // 
    } 

2. Redirect auf eine andere Tätigkeit vom Fass
Innerhalb onClick Methode können Sie eine neue Tätigkeit beginnen wie:

@Override 
public void onItemClick(View view, int position) { 
    // check for item 
    Intent intent = new Intent(mContext); 
    startActivity(intent); 
    } 

3. Wenn zurück zur Recycler-Ansicht das ausgewählte Objekt als hervorgehoben angezeigt wird
Machen Sie eine public static var. Wenn Sie ein Element klicken - die Benutzer auf einem anderen activity zuweisen den Element-ID zu diesen static var, jetzt in onBindViewHolder Umleitung wird immer überprüfen, ob die list-item-ID als selber wie die static var wenn es true dann Hintergrund der wie in Teil view ändern 1 .
Sicherstellen, dass activity nach dem Start einer neuen activity nicht beendet wird.

+0

seine Arbeit Highlight recycler-view item, aber step 3 ich kann es nicht verstehen! – meladandroid

+0

Wenn Benutzer auf ein 'Item' tippen, speichern Sie dieses Item' id' entweder in 'SharedPreferences' oder in einer statischen Variable ... in' getView() 'oder' bindHindler() 'checken Sie nach dem Item' id', wenn itemId ist gleich der zuletzt ausgewählten Item-ID, dann ändere Hintergrundfarbe wie
'if (viewHolder.itemId == myItemId) {view.backgroundColor (Color.parseColor (" # eee ")); } ' – samirk433

0

Wenn auf ein Element klicken, seine Position speichern und auf der anderen Tätigkeit übergeben. Sobald Sie zur ursprünglichen Aktivität zurückkehren, geben Sie den gespeicherten Wert zurück und in der Methode onBindViewHolder, wenn die Position gleich dem gespeicherten Wert ist, markieren Sie das Element.

+0

hmmm können Sie Code dafür schreiben? – meladandroid

Verwandte Themen