Java 如何在没有ListView的情况下在ArrayList中添加侦听器
我想在android studio中制作一个仪表板。我使用两个xml来制作仪表板主活动和列表项活动。在编码会话中,我使用了模型类适配器和主类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
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
}
}));