在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中控件的点击事件传出来等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)