我遇到一个问题,我有多个文本视图,这些视图应具有相同的onclick函数。我显然可以编写多个onclick,但我想要优化的代码。
例如,我有红色的文本视图和蓝色的其他文本视图,我希望所有红色具有相同的onclick功能,并且希望所有蓝色具有与红色不同的相同onclick功能。
有没有一种方法可以在android java中实现?
答案 0 :(得分:1)
在View.OnClickListener
类型的变量中声明您的click事件,然后将其分配给您的textview,如下所示:
View.OnClickListener eventVar = new View.OnClickListener() {
@Override
public void onClick(View view) {
//do what you need
}
};
textview1.setOnClickListener(eventVar);
textview2.setOnClickListener(eventVar);
textview3.setOnClickListener(eventVar);
textview4.setOnClickListener(eventVar);
答案 1 :(得分:0)
为红色分配一个ID,为蓝色分配另一个。并编写一个switch语句,如下所示
switch (id)
case 0:
runAmethod();
break;
case 1:
runAnotherMethod():
break;
default:
答案 2 :(得分:0)
解决方案:
首先,创建通用的公共方法来获得TextView
点击,
public void onTextViewClick(View v) {
switch (v.getId()) {
case R.id.VIEW_ID:
case R.id.VIEW_ID:
case R.id.VIEW_ID:
// Performs action for Blue Text View
break;
case R.id.VIEW_ID:
case R.id.VIEW_ID:
// Performs action for Red Text View
break;
}
}
然后,在您的xml中这样写TextView onClick
,
<TextView
...
android:onClick="onTextViewClick"/>
答案 3 :(得分:0)
Write a common function for your all the color textview like
private void clickOfRedTextView(){
// your code.
}
Now implement your activity or fragment with OnClickListener listener and pass the on click
textviewred1.setOnClickListener(this);
textviewred2.setOnClickListener(this);
// so on ...
In the override method of onclick you can have a switch case with view id as follow.
public void onClick(View v) {
switch (v.getId()) {
case R.id.textviewred1:
case R.id.textviewred2:
so on....
// your function you want to call will come here.
clickOfRedTextView();
break;
}
}
答案 4 :(得分:0)
您可以使用这种最简单的方法:
在xml文件中为这样的红色文本视图和蓝色文本视图定义onClick。
<TextView
//other attributes...
android:onClick="redTextViewMethod"/>
<TextView
//other attributes...
android:onClick="blueTextViewMethod"/>
然后在这样的相应Java文件中定义redTextViewMethod方法
private void redTextViewMethod() {
//your code
}
private void blueTextViewMethod() {
//your code
}