Android中如何在布局文件中为组件绑定点击事件

Android中如何在布局文件中为组件绑定点击事件,第1张

在Android中为组件绑定点击事件的方式可以分为四种,

1、 在xml布局文件中,定义onclick的方式

<!—第一步在XML文件中给对应组件添加Onclick属性-->

<Button

android:id="@+id/submitbutton"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentEnd="true"

android:layout_alignParentRight="true"

android:onClick="buttonClickHandle"

android:layout_alignParentTop="true"

android:text="提交" />

//第二步在对应的Activity中创建一个与onClick属性值相同的方法,并传入一个View参数,当Button被点击时就会回调这个方法。

public void buttonClickHandle(View view) {

Snackbarmake(coordinatorLayout, "你点击了Button", SnackbarLENGTH_LONG)

setAction("Action", null)show();

}

另外三种绑定点击事件的方式实际上就是通过组件调用setOnClickListener()的方法,下面我们就来看一下这个方法的源码。

/

Register a callback to be invoked when this view is clicked If this view is not

clickable, it becomes clickable

@param l The callback that will run

@see #setClickable(boolean)

/

public void setOnClickListener(@Nullable OnClickListener l) {

if (!isClickable()) {

setClickable(true);

}

getListenerInfo()mOnClickListener = l;

}

根据源码我们可以看到这个方法中需要一个OnClickListener的对象。下面我们就来看看这个OnClickListener对象是个什么东东。

/

Interface definition for a callback to be invoked when a view is clicked

/

public interface OnClickListener {

/

Called when a view has been clicked

@param v The view that was clicked

/

void onClick(View v);

}

根据源码我们可以看到实际上这个OnClickListener就是一个接口,这个接口中有一个onClick的抽象方法。所以我们在创建这个OnClickListener对象是还需要实现这个抽象方法。这个onClick的抽象方法实际上就是当我们点击按钮后会回调的方法。我们对于点击事件的响应处理就在这个方法中进行。

现在我们已经了解了设置点击事件的setOnClickListener方法,根据我们如何创建这个方法中的OnClickListener对象,我们设置点击事件的方式可以分为如下三种:

1、内部类的形式

a package comexamplehsportcatalog;

import androidosBundle;

import androidsupportdesignwidgetCoordinatorLayout;

import androidsupportdesignwidgetSnackbar;

import androidsupportv7appAppCompatActivity;

import androidviewView;

import androidwidgetButton;

public class MainActivity extends AppCompatActivity {

private CoordinatorLayout coordinatorLayout;

@Override

protected void onCreate(Bundle savedInstanceState) {

superonCreate(savedInstanceState);

setContentView(Rlayoutactivity_main);

coordinatorLayout = (CoordinatorLayout) findViewById(Ridcoordinator);

// 获取button对象

Button button = (Button) findViewById(Ridsubmitbutton);

//创建内部类的实例

MyListener myListener = new MyListener();

//设置button的点击事件,将实现OnClickListener接口的内部类实例传入到setOnClickListener方法中

buttonsetOnClickListener(myListener);

}

//创建一个内部类实现ViewOnClickListener接口,并实现其onClick方法

private class MyListener implements ViewOnClickListener {

@Override

public void onClick(View v) {

Snackbarmake(coordinatorLayout, "你点击了Button", SnackbarLENGTH_LONG)setAction("Action", null)show();

}

}

}

2、 匿名内部类的方式

package comexamplehsportcatalog;

import androidosBundle;

import androidsupportdesignwidgetCoordinatorLayout;

import androidsupportdesignwidgetSnackbar;

import androidsupportv7appAppCompatActivity;

import androidviewView;

import androidwidgetButton;

public class MainActivity extends AppCompatActivity {

private CoordinatorLayout coordinatorLayout;

@Override

protected void onCreate(Bundle savedInstanceState) {

superonCreate(savedInstanceState);

setContentView(Rlayoutactivity_main);

coordinatorLayout = (CoordinatorLayout) findViewById(Ridcoordinator);

//获取Button对象

Button button = (Button) findViewById(Ridsubmitbutton);

//以创建一个ViewOnClickListener的匿名内部类,并实现它的onClick方法

buttonsetOnClickListener(new ViewOnClickListener() {

//在onClick方法中我们就可以设置button的响应代码了

@Override

public void onClick(View v) {

Snackbarmake(coordinatorLayout, "你点击了Button",SnackbarLENGTH_LONG)setAction("Action", null)show();

}

});

}

3、 让主类实现OnClickListener接口,然后再主类实现未实现的方法

package comexamplehsportcatalog;

import androidosBundle;

import androidsupportdesignwidgetCoordinatorLayout;

import androidsupportdesignwidgetSnackbar;

import androidsupportv7appAppCompatActivity;

import androidviewView;

import androidwidgetButton;

public class MainActivity extends AppCompatActivity implements ViewOnClickListener {

private CoordinatorLayout coordinatorLayout;

@Override

protected void onCreate(Bundle savedInstanceState) {

superonCreate(savedInstanceState);

setContentView(Rlayoutactivity_main);

coordinatorLayout = (CoordinatorLayout) findViewById(Ridcoordinator);

//获取Button对象

Button button = (Button) findViewById(Ridsubmitbutton);

//因为我们让MainActivity实现了ViewOnClickListener这个接口,所以setOnClickListener方法中的参数直接传入this即可。

buttonsetOnClickListener(this);

}

//因为MainActivity实现了ViewOnClickListener接口,所以在MainActivity中还有要实现该接口中改的onClick方法来处理点击事件。

@Override

public void onClick(View v) {

Snackbarmake(coordinatorLayout, "你点击了Button",SnackbarLENGTH_LONG)setAction("Action", null)show();

}

}

关于如何给组件绑定点击事件,是Android中的基础知识,如果你还想更加详细的了解,推荐你可以去一个叫做秒秒学的教程网站看看,夯实下基础。

假如你的标题使用textview显示,你需要在adapter中的getview内定义一个textview为mtext,让他等于当前显示标题的textview,然后在按钮的点击事件中修改mtext的内容

使用回调,创建一个接口,提供set方法,然后在adapter中调用接口方法,在Activity实现接口就可以了。\x0d\\x0d\public class adapter{//这是你的adapter类\x0d\ \x0d\public EditDialogCallBack editecallback;//回调接口类\x0d\adaptersetonclick{//你adapter中的点击事件\x0d\ if(editecallback!=null){\x0d\ \x0d\ editecallbackclickOk();\x0d\}\x0d\}\x0d\ \x0d\public void setCallBack(EditDialogCallBack callBack) {\x0d\ thiscallBack = callBack;\x0d\ }\x0d\}\x0d\public interface callBack{\x0d\ public void clickOk();\x0d\ }\x0d\ \x0d\public class activity{//你的界面类\x0d\ new adaptersetCallBack(new EditDialogCallBack{\x0d\ \x0d\ @Override\x0d\ public void clickOk() {}\x0d\ \x0d\} )\x0d\}

android中所谓的控件名字就是ID

<ImageButton

android:id="@+id/back"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:background="@drawable/back">

mGridsetOnItemClickListener(new OnItemClickListener() {

public void onItemClick(AdapterView<> arg0, View arg1,int arg2, long arg3) {

if (arg1getId()== Ridback){

}

}

}

d出对话框Dialog解决

你在动作时建一个Dialog 如下:

AlertDialogBuilder dialog=new AlertDialogBuilder(Dialog01Activitythis);

dialogsetTitle("Dialog")setIcon(androidRdrawableic_dialog_info)setMessage("d出框")setPositiveButton("确定", new DialogInterfaceOnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

//转跳到另外一个Activity

// TODO Auto-generated method stub

Intent intent=new Intent();

intentsetClass(getApplicationContext(), listclass);

startActivity(intent);

}

})setNegativeButton("取消", new DialogInterfaceOnClickListener() {

public void onClick(DialogInterface dialog, int which) {

// TODO Auto-generated method stub

dialogcancel();//取消d出框

}

})create()show();

以上就是关于Android中如何在布局文件中为组件绑定点击事件全部的内容,包括:Android中如何在布局文件中为组件绑定点击事件、android父控件点击,如何获取事件源子控件、Android怎么才能将Adapter中控件的点击事件传出来等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10158954.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存