Search code examples
javaandroidpositionandroid-recyclerview

Go to the item selected on the RecyclerView


Problem: I want to go to the user's selected item But I can not do it Selected position.

How can I get my position and stay in place??? I tried many ways but it was fruitless Does my code have problems?

Any way to your opinion to help me
enter image description here

Code Adapter :

 public class Adapter_Badan extends RecyclerView.Adapter<Adapter_Badan.ViewHolder> {
private Context context;
private List<Modell_Badan> modells;

public Adapter_Badan(Context context, List<Modell_Badan> modells) {
    this.modells = modells;
    this.context = context;

}


@NonNull
@Override
public Adapter_Badan.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    return new Adapter_Badan.ViewHolder(LayoutInflater.from(context).inflate(R.layout.layout_badan, parent, false));
}

@Override
public void onBindViewHolder(@NonNull final Adapter_Badan.ViewHolder holder, final int position) {
    final Modell_Badan modell = modells.get(position);
    holder.title.setText(modell.getTitle());
    holder.content.setText(modell.getContent());
    Picasso.get().load(modell.getImage()).into(holder.image1);
    Picasso.get().load(modell.getImage2()).into(holder.image2);

    holder.itemView.setOnClickListener(new View.OnClickListener() {

               @Override
        public void onClick(View v) {


            new Handler().postDelayed(new Runnable() {
                public void run() {

                    Intent intent= new Intent(context,Badan.class);

                    intent.putExtra(Modell.ID,modell.getId());
                    intent.putExtra(Modell.TITLE,modell.getTitle());
                    intent.putExtra(Modell.CONTENT,modell.getContent());
                    intent.putExtra(Modell.IMAGE1,modell.getImage());
                    intent.putExtra(Modell.IMAGE12,modell.getImage2());
                    intent.putExtra("id", "1");
                    context.startActivity(intent);


                    ((Activity)context).finish();

                    ((Activity)context).overridePendingTransition(R.anim.alpha_f,R.anim.alpha_o);

                }
            }, 20);

        }

    });
}

@Override
public int getItemCount() {
    return modells.size();
}

public class ViewHolder extends RecyclerView.ViewHolder  {

    private ImageView image1;
    private ImageView image2;
    private TextView title;
    private TextView content;
    private RelativeLayout relativeLayout;
    public ViewHolder(View itemView) {


        super(itemView);

        image1 = (ImageView) itemView.findViewById(R.id.image_badan);
        image2 = (ImageView) itemView.findViewById(R.id.image2_badan);
        title = (TextView) itemView.findViewById(R.id.title_badan);
        content = (TextView) itemView.findViewById(R.id.content_badan);

    }


}

But after the item is selected, the position is deleted Can I prove the item's position?

Code Badan :

public class Badan extends AppCompatActivity  {
private SharedP_Thems sharedP_thems;
private ImageView image_layout, image_layout2;
private TextView title_, content_;
private SharedPerfern sharedPerfern;
private Shared_Modell shared_modell;
private Adapter_Badan adapter_badan;
int a;
@Override
protected void onCreate(Bundle savedInstanceState) {
    sharedPerfern = new SharedPerfern(this);
    shared_modell = sharedPerfern.getShared();
    sharedP_thems = new SharedP_Thems(this);

    if (sharedP_thems.getLoad().equals(true))
        setTheme(R.style.dark_them);
    else setTheme(R.style.AppTheme);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_badan);

    setUpToolbarLayout();
    setUpView();


    RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recy_badanw);
    Adapter_Badan adapter_badan=new Adapter_Badan(this, Data_FackeGen.getModellBadan(this));
    recyclerView.setLayoutManager( new StaggeredGridLayoutManager(1,StaggeredGridLayoutManager.HORIZONTAL));
    recyclerView.setAdapter(adapter_badan);


    getInten();
    title_.setTextSize(shared_modell.getFonSize());
    content_.setTextSize(shared_modell.getFonSize());


}


private void setUpToolbarLayout() {

    android.support.v7.widget.Toolbar toolbar = (android.support.v7.widget.Toolbar) findViewById(R.id.tollbar_badab);
    setSupportActionBar(toolbar);
    getSupportActionBar().setHomeButtonEnabled(true);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    toolbar.setNavigationOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            finish();
        }
    });
}

private void setUpView() {
    image_layout = (ImageView) findViewById(R.id.image_badan2w);
    image_layout2 = (ImageView) findViewById(R.id.image2_badanw);
    title_ = (TextView) findViewById(R.id.title_badanw);
    content_ = (TextView) findViewById(R.id.content_badanw);
}

private void getInten() {
    Intent intent = getIntent();
    int id = intent.getIntExtra(Modell.ID, 0);
    String titel = intent.getStringExtra(Modell.TITLE);
    String content = intent.getStringExtra(Modell.CONTENT);
    int image1 = intent.getIntExtra(Modell.IMAGE1, 2);
    int image2 = intent.getIntExtra(Modell.IMAGE12, 2);
    Picasso.get().load(image1).into(image_layout);
    Picasso.get().load(image2).into(image_layout2);
    title_.setText(titel);
    content_.setText(content);
}

}


Solution

  • The problem was solved I used the following method and responded

        @Override
    protected void onPause() {
        super.onPause();
        bundle = new Bundle();
        Parcelable parcelable = recyclerView.getLayoutManager().onSaveInstanceState();
        bundle.putParcelable(KEY_RECYCLER_STATE, parcelable);
    }
    
    @Override
    protected void onResume()
    {
        super.onResume();
    
        // restore RecyclerView state
        if (bundle != null) {
            Parcelable parcelable = bundle.getParcelable(KEY_RECYCLER_STATE);
            recyclerView.getLayoutManager().onRestoreInstanceState(parcelable);
        }
    }