yi1802334 2024-12-06 17:32 采纳率: 84.6%
浏览 18
已结题

Androidstudio怎么在fragment 的 recyclerview 添加点击事件

Androidstudio怎么在fragment 的 recyclerview 添加点击事件 我做了一个微信界面 怎么给"支付","收藏","朋友圈","卡包","表情","设置" 点击后到另外的页面
建了一个onOptionsItemSelected 怎么点击跳转到其他页面?

img

img

img

package com.hnucm.c201901020241;

import android.os.Bundle;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.List;


public class MyFragment extends Fragment {

    List<Find> list=new ArrayList<>();//动态扩容
    RecyclerView recyclerView;
    MyAdapter myAdapter;
    String name[]={"支付","收藏","朋友圈","卡包","表情","设置"};
    int img[]={R.drawable.e2,R.drawable.e3,R.drawable.e4,R.drawable.e5,R.drawable.e6,R.drawable.e7};
    private TextView username;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_my, container, false);
    }
    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
//        initView();
//        initListener();
    }
//    private void initView() {
//        username = getView().findViewById(R.id.username);
//        username.setText(String.format("用户昵称:%s", CurrentUserUtils.getCurrentUser().getUsername()));
//
//    }
//
//    private void initListener() {
//
//    }


    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        recyclerView=getActivity().findViewById(R.id.recyclerView4);
        for(int i=0;i<6;i++){
            Find find=new Find();
            find.setName(name[i]);
            find.setImg(img[i]);
            list.add(find);
        }
        myAdapter=new MyAdapter();
        recyclerView.setAdapter(myAdapter);
        recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
    }

    public class MyAdapter extends RecyclerView.Adapter<MyViewHolder>{
        @NonNull
        @Override
        public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(getActivity()).inflate(R.layout.find_list, parent, false);
            MyViewHolder myViewHolder=new MyViewHolder(view);
            return myViewHolder;
        }
        @Override
        public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
            holder.nameTV.setText(list.get(position).getName());
            holder.imageView.setBackground(getResources().getDrawable(list.get(position).getImg()));
        }
        @Override
        public int getItemCount() {
            return list.size();
        }
    }

    public class MyViewHolder extends RecyclerView.ViewHolder{
        TextView nameTV;
        ImageView imageView;
        public MyViewHolder(@NonNull View itemView) {
            super(itemView);
            nameTV=itemView.findViewById(R.id.textView9);
            imageView=itemView.findViewById(R.id.imageView7);
        }
    }
}

  • 写回答

1条回答 默认 最新

  • 关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    在你的 RecyclerView 的适配器 MyAdapter 中,你可以重写 onItemClick 方法来实现点击事件。当用户点击列表中的每一项时,这个方法会被触发。在这个方法中,你可以根据你的需求执行相应的动作,例如跳转到其他的页面或者执行其他的逻辑。具体做法如下:

    首先,在你的 MyViewHolder 类中,添加一个 itemView 的点击事件监听器。在 MyViewHolder 的构造函数中添加如下代码:

    public MyViewHolder(@NonNull View itemView) {
        super(itemView);
        nameTV = itemView.findViewById(R.id.textView9);
        imageView = itemView.findViewById(R.id.imageView7);
        itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 在这里处理点击事件
                int position = getAdapterPosition();  // 获取点击的项的位置
                switch (position) {
                    case 0: // "支付"
                        // 跳转到支付页面或其他逻辑
                        break;
                    case 1: // "收藏"
                        // 跳转到收藏页面或其他逻辑
                        break;
                    // ... 其他项的处理逻辑
                }
            }
        });
    }
    

    然后,在 MyAdapteronBindViewHolder 方法中,你可以为每个 TextViewImageView 设置点击事件监听器,这样当用户点击这些视图时也会触发相应的动作。例如:

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
        holder.nameTV.setText(list.get(position).getName());
        holder.imageView.setBackground(getResources().getDrawable(list.get(position).getImg()));
        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 这里是点击整个item的监听器,与上面的功能相同,可以重复或者执行其他操作。
                int position = holder.getAdapterPosition();  // 获取点击的项的位置
                switch (position) {
                    case 0: // "支付"
                        // 跳转到支付页面或其他逻辑
                        break;
                    case 1: // "收藏"
                        // 跳转到收藏页面或其他逻辑
                        break;
                    // ... 其他项的处理逻辑
                }
            }
        });
    }
    

    这样,当用户点击列表中的任何一项时,都会触发相应的动作。你可以根据需要在 switch 语句中添加跳转到其他页面的代码或者执行其他逻辑。注意替换 "支付", "收藏" 等为你的具体需求。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月14日
  • 已采纳回答 1月6日
  • 创建了问题 12月6日