添加不同的 onClickListener 到动态创建的视图
Adding different onClickListener to dynamically creataed Views
我正在创建一个 android 应用程序,我正在其中动态创建 2 个 imageView 和 2 个按钮,我想为它们分配 onClickListeners 并且我想为它们中的每一个执行不同的功能。我在整个互联网上搜索过,但没有关于如何让视图在点击时发挥自己的功能的信息。
到目前为止我已经想到了这个:
/* Setting the ids */
leftImageView.setId(View.generateViewId());
rightImageView.setId(View.generateViewId());
sendButton.setId(View.generateViewId());
setButton.setId(View.generateViewId());
leftImageView.setOnClickListener(this);
rightImageView.setOnClickListener(this);
sendButton.setOnClickListener(this);
setButton.setOnClickListener(this);
@Override
public void onClick(View v) {
switch (v.getId()){
case leftImageView.getId() :
}
下面是这段代码中的错误截图:
使用id常量-
@Override public void onClick(View v) {
switch (v.getId()){
case R.id.image_view:
}
或
使用 if-else 语句代替 switch。它会很好用。
您不能在 onclick
中使用 getId()
方法。
ID 应该是静态的。
您可以分配一些硬编码的 id 以在 onclicklistener 中查看和使用它。
@Override
public void onClick(View v) {
switch (v){
case 45:
Break;
}
}
您可以使用多个 if else
或者可以使用 switch
public void onClick(View v) {
if(v.getId()==leftImageView.getId())
{
}
else
if(v.getId()==rightImageView.getId())
{
}
}
或
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.leftimage_view:
break;
}
}
您必须为您的按钮分配一个已知 ID,如下所示:
在您的 Activity 中实施 View.OnClickListener
public class Activity implements View.OnClickListener { }
生成已知 ID 并将按钮的回调注册到 OnClickListener
leftImageView.setId(1);
rightImageView.setId(2);
sendButton.setId(3);
setButton.setId(4);
leftImageView.setOnClickListener(this);
rightImageView.setOnClickListener(this);
sendButton.setOnClickListener(this);
setButton.setOnClickListener(this);
并且在您的 OnClick 方法中应该如下所示
@Override
public void onClick(View view) {
switch (view.getId()) {
case 1:
// leftImageView is click
break;
case 2:
// rightImageView is click
break;
case 3:
// sendButton is click
break;
case 4:
// setButton is click
break;
default:
break;
}
}
除了设置和获取 ID,您还可以简单地执行以下操作:
leftImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
rightImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
sendButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
setButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
我正在创建一个 android 应用程序,我正在其中动态创建 2 个 imageView 和 2 个按钮,我想为它们分配 onClickListeners 并且我想为它们中的每一个执行不同的功能。我在整个互联网上搜索过,但没有关于如何让视图在点击时发挥自己的功能的信息。
到目前为止我已经想到了这个:
/* Setting the ids */
leftImageView.setId(View.generateViewId());
rightImageView.setId(View.generateViewId());
sendButton.setId(View.generateViewId());
setButton.setId(View.generateViewId());
leftImageView.setOnClickListener(this);
rightImageView.setOnClickListener(this);
sendButton.setOnClickListener(this);
setButton.setOnClickListener(this);
@Override
public void onClick(View v) {
switch (v.getId()){
case leftImageView.getId() :
}
下面是这段代码中的错误截图:
使用id常量-
@Override public void onClick(View v) {
switch (v.getId()){
case R.id.image_view:
}
或
使用 if-else 语句代替 switch。它会很好用。
您不能在 onclick
中使用 getId()
方法。
ID 应该是静态的。
您可以分配一些硬编码的 id 以在 onclicklistener 中查看和使用它。
@Override
public void onClick(View v) {
switch (v){
case 45:
Break;
}
}
您可以使用多个 if else
或者可以使用 switch
public void onClick(View v) {
if(v.getId()==leftImageView.getId())
{
}
else
if(v.getId()==rightImageView.getId())
{
}
}
或
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.leftimage_view:
break;
}
}
您必须为您的按钮分配一个已知 ID,如下所示:
在您的 Activity 中实施 View.OnClickListener
public class Activity implements View.OnClickListener { }
生成已知 ID 并将按钮的回调注册到 OnClickListener
leftImageView.setId(1); rightImageView.setId(2); sendButton.setId(3); setButton.setId(4); leftImageView.setOnClickListener(this); rightImageView.setOnClickListener(this); sendButton.setOnClickListener(this); setButton.setOnClickListener(this);
并且在您的 OnClick 方法中应该如下所示
@Override public void onClick(View view) { switch (view.getId()) { case 1: // leftImageView is click break; case 2: // rightImageView is click break; case 3: // sendButton is click break; case 4: // setButton is click break; default: break; } }
除了设置和获取 ID,您还可以简单地执行以下操作:
leftImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
rightImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
sendButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
setButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});