Как получить ID/название обьекта в RecyclerView?

Мне нужно,чтобы при нажатии на обьект в RecyclerView(папка, которая ведет на новое активити),в верхнем ActionBar'e показывался тайтл с названием этой папки. Т.е если у меня есть Папка 1,Папка 2 и Папка 3,то при открытии Папки 2 у меня должно отображаться 2 и т.д. Я уже что только не пробовал, но всегда отображается либо название первой в списке папки, либо последней. Как дать системе понять, какую именно папку я открываю, чтобы потом найти имя папки в массиве?? Подойдет абсолютно любой способ, хоть уникальное ID TextView в шаблоне(folder_layout) для этой папки.

Для хранения имен папок я использую массив InputedLinks в классе приложения.

Код адаптера, для создания папок.

package com.example.test;

import android.app.AlertDialog;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.ArrayList;

import androidx.annotation.NonNull;
import androidx.cardview.widget.CardView;
import androidx.recyclerview.widget.RecyclerView;

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.MyViewHolder>  {

    private AlertDialog.Builder ADbuilder;
    private AlertDialog LinkDelete;
    private TextView hint;
    private Button ok, cancel;

    Context context;
    int favicons[];
    int position;

    public RecyclerViewAdapter(Context cont, ArrayList<String> folders, int favics[]) {
        context = cont;
        MyApp.appInstance.Inputedlinks = folders;
        favicons = favics;
    }

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        LayoutInflater inflater = LayoutInflater.from(context);
        View view = inflater.inflate(R.layout.folder_layout, parent, false);
        return new MyViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder holder, final int position) {
        holder.links_res.setText(MyApp.appInstance.Inputedlinks.get(position));
        holder.favicon.setImageResource(favicons[0]);

        final String folders= MyApp.appInstance.Inputedlinks.get(position);

        holder.foldercard.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View view) {
                CreateHintWindow();
                return true;
            }
        });
    }

    @Override
    public int getItemCount() {
        return MyApp.appInstance.Inputedlinks.size();
    }

    public class MyViewHolder extends RecyclerView.ViewHolder {
        TextView links_res;
        ImageView favicon;
        CardView foldercard;

        public MyViewHolder(@NonNull View itemView) {
            super(itemView);
            links_res = itemView.findViewById(R.id.link_res);
            favicon = itemView.findViewById(R.id.link_icon);
            foldercard = itemView.findViewById(R.id.linkCard);
        }
    }

    private void CreateHintWindow(){
        ADbuilder = new AlertDialog.Builder(context);
        LayoutInflater inflater = LayoutInflater.from(context);
        final View WindowView = inflater.inflate(R.layout.delete_window, null);

        hint = WindowView.findViewById(R.id.hint);
        ok = WindowView.findViewById(R.id.okButton);
        cancel = WindowView.findViewById(R.id.cancelButton);

        final String folders = MyApp.appInstance.Inputedlinks.get(position);

        ADbuilder.setView(WindowView);
        LinkDelete = ADbuilder.create();
        LinkDelete.show();

        ok.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                RemoveItem(folders);
                LinkDelete.dismiss();
            }
        });

        cancel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                LinkDelete.dismiss();
            }
        });
    }

    private void RemoveItem(String folders){
        int position = MyApp.appInstance.Inputedlinks.indexOf(folders);
        MyApp.appInstance.Inputedlinks.remove(position);
        PreferencesConfig.ArrayPref(context, MyApp.appInstance.Inputedlinks);
        notifyItemRemoved(position);
    }

}

Код основного активити, из которого я открываю папки. В новое активити нужно передать FolderTitle.

package com.example.test;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.content.Intent;
import android.os.Bundle;
import android.os.PersistableBundle;
import android.view.View;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

    ArrayList<String> links_list = new ArrayList<String>();

    RecyclerView recyclerView;
    RecyclerViewAdapter myAdapter;

    int folder_icon[] = {};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        links_list = PreferencesConfig.ReadArrayPref(this);
        if (links_list == null){
            links_list = new ArrayList<>();
        }

        recyclerView = findViewById(R.id.foldersView);

        RecyclerViewAdapter myAdapter = new RecyclerViewAdapter(this, links_list, folder_icon);
        recyclerView.setAdapter(myAdapter);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));

    }

    public void onClickOpenFolder(View view){
        Intent intent = new Intent(this, FolderActivity.class);
        intent.putExtra("title", MyApp.appInstance.FolderTitle);
        startActivity(intent);
    }
...

Ответы (0 шт):