gpt4 book ai didi

Android - 从另一个类设置 OnClickListener

转载 作者:行者123 更新时间:2023-11-30 03:45:34 25 4
gpt4 key购买 nike

我的 GridView 有一个 OnClickListener:

public class MyOnClickListener implements View.OnClickListener {
private final int position;

public MyOnClickListener(int position)
{
this.position = position;
}

public void onClick(View v) {
// TODO Auto-generated method stub
switch(position){
case 0:
Intent a = new Intent(v.getContext(), Weapons.class);
v.getContext().startActivity(a);
break;
//case 1, 2, etc...

}
}

如何在其他类(class)中使用它?我有我的 Category 类这样做:

GridView gridview = (GridView) findViewById(R.id.categoryGrid);
gridview.setAdapter(new ButtonAdapter(this));
gridview.setOnClickListener(new MyOnClickListener(this));

当我这样做时,(new MyOnClickListener(this)); 行带有下划线,表示我需要将 public MyOnClickListener(int position) 更改为 public MyOnClickListener(类别类别)

我该如何解决这个问题?

最佳答案

选择你想要的,你想让 MyOnClickListenerCategory 对象中接受还是一个整数基元?

问题是您的构造函数接受一个 int,但是当您创建一个 new MyOnClickListener 时,您传递了 this,它指向 Category 实例,它不是一个整数。如果您不想通过 this 传递一个整数(通常 0 是起始索引)。

gridview.setOnClickListener(new MyOnClickListener(0));

例如

public MyOnClickListener(int position)  //requires an int
{
this.position = position;
}

如果你想同时接受两个参数,让构造函数要么接受两个参数,要么创建两个单独的构造函数。

Category category;
public MyOnClickListener(int position, Category category)
{
this.position = position;
this.categoty = category;
}

或者

Category category;
public MyOnClickListener(Category category)
{
this.position = 0;
this.categoty = category;
}

此外,GridView 应该使用 OnItemClickListener 而不是因为 OnClickListener 不会 注册位置。这意味着您需要更改类以实现 AdapterView.OnItemClickListener:

public class MyOnClickListener implements AdapterView.OnItemClickListener {

public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
switch(position){
case 0:
Intent a = new Intent(v.getContext(), Weapons.class);
v.getContext().startActivity(a);
break;
//case 1, 2, etc...

}
}
}

然后使用 setOnItemClickListener() 设置它:

gridview.setOnItemClickListener(new MyOnClickListener());

关于Android - 从另一个类设置 OnClickListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15057396/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com