简体   繁体   English

在 Recyclerview 中获取选中的项目位置

[英]Get selected item position in Recyclerview

I am using Recyclerview.我正在使用 Recyclerview。 I added a menu with Recyclerview.我用 Recyclerview 添加了一个菜单。 I want to make a switch case in Recyclerview.我想在 Recyclerview 中制作一个开关盒。 So when I click on item 1, when I click on item 2, I click on step 3. When I click on my item.. I want to call a function.因此,当我点击项目 1 时,当我点击项目 2 时,我点击步骤 3。当我点击我的项目时.. 我想调用一个函数。 Currently I tried to read the position of the items with getAdapterPosition, but the output is always -1.目前我尝试使用 getAdapterPosition 读取项目的位置,但输出始终为 -1。 For example, when I click on model, when I click on model2, I want to call a function.比如我点击model,当我点击model2的时候,我想调用一个函数。

Main2Activity主要活动

public class Main2Activity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {

 RecyclerView navRecyclerView;
    LinearLayoutManager layoutManager;
    ArrayList<NavigationDataModel> arrayList = new ArrayList<>();
    NavigationAdapter adapter;
 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

navigationView.setNavigationItemSelectedListener(this);

        navRecyclerView = findViewById(R.id.navRecyclerView);
        navRecyclerView.setHasFixedSize(true);
        layoutManager = new LinearLayoutManager(this);
        navRecyclerView.setLayoutManager(layoutManager);

        DividerItemDecoration divider = new DividerItemDecoration(
                navRecyclerView.getContext(),
                DividerItemDecoration.VERTICAL
        );
        divider.setDrawable(ContextCompat.getDrawable(getBaseContext(), R.drawable.diveder_recycler));
        navRecyclerView.addItemDecoration(divider);

        initArray();

        adapter = new NavigationAdapter(this, arrayList);
        navRecyclerView.setAdapter(adapter);
 private void initArray() {

        NavigationDataModel model = new NavigationDataModel();
        model.setIcon(R.mipmap.avatar);
        model.setTitle("Hesabım");
        arrayList.add(model);

        NavigationDataModel model2 = new NavigationDataModel();
        model2.setIcon(R.mipmap.sss3);
        model2.setTitle("S.S.S");
        arrayList.add(model2);
}

NavigationAdapter导航适配器

public class NavigationAdapter extends RecyclerView.Adapter<NavigationAdapter.ViewHolder> {

    Context context;
    ArrayList<NavigationDataModel> arrayList = new ArrayList<>();

    public NavigationAdapter(Context context, ArrayList<NavigationDataModel> arrayList) {
        this.context = context;
        this.arrayList = arrayList;
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.navigationrecyclerview_adapter11, parent, false);


        final ViewHolder holder = new ViewHolder(view);
        holder.navTitle.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int position = holder.getAdapterPosition();
                System.out.println("asdasdadasd" + position);
            }
        });


        return new ViewHolder(view);
    }


    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {

        holder.navIcon.setImageResource(arrayList.get(position).getIcon());
        holder.navIconNew.setImageResource(arrayList.get(position).getIcon());
        holder.rootView.setBackgroundColor(arrayList.get(position).getColor());
        holder.navTitle.setText(arrayList.get(position).getTitle());
    }


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



    public class ViewHolder extends RecyclerView.ViewHolder {
        ImageView navIcon, navIconNew;
        TextView navTitle;
        LinearLayout rootView;

        public ViewHolder(View itemView) {
            super(itemView);
            rootView = itemView.findViewById(R.id.rootView);
            navIcon = itemView.findViewById(R.id.navIcon);
            navIconNew = itemView.findViewById(R.id.navIconNew);
            navTitle = itemView.findViewById(R.id.navTitle);
            Toast.makeText(context, String.valueOf(getAdapterPosition()), Toast.LENGTH_SHORT).show();

        }
    }
}
 @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {

        holder.navIcon.setImageResource(arrayList.get(position).getIcon());
        holder.navIconNew.setImageResource(arrayList.get(position).getIcon());
        holder.rootView.setBackgroundColor(arrayList.get(position).getColor());
        holder.navTitle.setText(arrayList.get(position).getTitle());
holder.navTitle.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // use position herer
            }
        });

    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM