Java 如何在没有ListView的情况下在ArrayList中添加侦听器

Java 如何在没有ListView的情况下在ArrayList中添加侦听器,java,android,arraylist,android-recyclerview,Java,Android,Arraylist,Android Recyclerview,我想在android studio中制作一个仪表板。我使用两个xml来制作仪表板主活动和列表项活动。在编码会话中,我使用了模型类适配器和主类 public class MainActivity extends AppCompatActivity { ArrayList<DashModel> dashModelArrayList; DashAdapter dashAdapter; private RecyclerView recyclerView; @Override protec

我想在android studio中制作一个仪表板。我使用两个xml来制作仪表板主活动和列表项活动。在编码会话中,我使用了模型类适配器和主类

public class MainActivity extends AppCompatActivity {

ArrayList<DashModel> dashModelArrayList;
DashAdapter dashAdapter;
private RecyclerView recyclerView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    recyclerView = findViewById(R.id.rv1);

    dashModelArrayList = new ArrayList<>();
    String heads[] = {"Jobs", "My Profile", "Messages", "Applied Jobs", "Resume", "Settings"};

    String subs[] = {"12 new jobs found", "75% complete", "2 new messages", "3 applies jobs", "Edit resume", "Set preferences"};

    int images[] = {R.drawable.find_jobs, R.drawable.profile, R.drawable.messages, R.drawable.applied_jobs,
            R.drawable.resume, R.drawable.settings};

    for (int count = 0; count < heads.length; count++) {
        DashModel dashModel = new DashModel();
        dashModel.setHead(heads[count]);
        dashModel.setSub(subs[count]);
        dashModel.setImage(images[count]);
        dashModelArrayList.add(dashModel);
        //this should be retrieved in our adapter

    }
    recyclerView.setLayoutManager(new GridLayoutManager(getApplicationContext(), 2));
    dashAdapter = new DashAdapter(dashModelArrayList);
    recyclerView.setHasFixedSize(true);
    recyclerView.setAdapter(dashAdapter);
}}
适配器类:

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

ArrayList<DashModel> dashModelArrayList;

public DashAdapter(ArrayList<DashModel> dashModelArrayList) {
    this.dashModelArrayList = dashModelArrayList;
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item,parent,false);
    return new ViewHolder(view);
}

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

    String ret_head = dashModelArrayList.get(position).getHead();
    holder.setheader(ret_head);

    String ret_sub = dashModelArrayList.get(position).getSub();
    holder.set_sub(ret_sub);

    int ret_image = dashModelArrayList.get(position).getImage();
    holder.set_image(ret_image);

}

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

public class ViewHolder extends RecyclerView.ViewHolder{

    TextView header,sub_header;
    ImageView images;
    View myView;

    public ViewHolder(View itemView) {
        super(itemView);
        myView = itemView;
    }

    public void setheader(String h)
    {
        header = myView.findViewById(R.id.header);
        header.setText(h);
    }

    public void set_sub(String s)
    {
        sub_header = myView.findViewById(R.id.sub_header);
        sub_header.setText(s);
    }
    public void set_image(int i)
    {
        images = myView.findViewById(R.id.dash_image);
        images.setImageResource(i);
    }


}}
如何在此处添加侦听器

我希望并希望在图标中添加OnItemclickListener,但我不能也不知道如何添加。

要为RecyclerView创建onClickListener,您必须创建一个实现RecyclerView.OnItemTouchListener的类

之后,您可以将其连接到您的RecyclerView以侦听单击

recyclerView.addOnItemTouchListener(new RecyclerViewTouchListener(getActivity(), recyclerView, new RecyclerViewTouchListener.ClickListener(){

        @Override
        public void onClick(View view, int position)
        {
            // TODO: Implement this method


        }

        @Override
        public void onLongClick(View view, int position)
        {
            // TODO: Implement this method
        }                                           
    }));

你能用adapter类发布DashAdapteri更新吗请查看字符串头的任何可能解决方案[]={作业、我的个人资料、消息、应用的作业、简历、设置};实际上,我想在这个数组中添加onitem click listener。您正在recyclerview中显示heads[]数组,因此您可以使用我的答案为recyclerview创建OnClick listener。
recyclerView.addOnItemTouchListener(new RecyclerViewTouchListener(getActivity(), recyclerView, new RecyclerViewTouchListener.ClickListener(){

        @Override
        public void onClick(View view, int position)
        {
            // TODO: Implement this method


        }

        @Override
        public void onLongClick(View view, int position)
        {
            // TODO: Implement this method
        }                                           
    }));