以下是Android onCreate()
代码的摘要。
View view1;
View view2;
boolean hidden = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.volunteer_screen);
view1 = findViewById(R.id.sub1);
view2 = findViewById(R.id.answer1);
view1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (hidden)
{
view2.setVisibility(View.GONE);
hidden = false;
} else
{
view2.setVisibility(View.VISIBLE);
hidden = true;
}
}
});
我如何将其封装在某个类中,可能使用如下构造函数:
Class(View view1, View view2, boolean state)
不要将setOnClickListener()
方法调用到每对新的TextViews
?
非常感谢提前!
答案 0 :(得分:0)
您将有一个视图(如按钮)隐藏或显示另一个视图吗?
如果是这样,在布局上添加import HandySwift
let line = " BB-8 likes Rey "
line.strip // => "BB-8 likes Rey"
并在您的班级上创建方法
android:onclick="myFunction"
您可以使用public void myFunction(View v){
// do your logic
}
检查哪个视图调用该函数,这样,您可以构建一个开关或逻辑并更改正确的视图。
答案 1 :(得分:0)
您可以在同一个类中定义这样的方法:
private void setClickListener(final EditText sub, final EditText answer) {
sub.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
answer.setVisibility(hidden ? View.GONE : View.VISIBLE);
hidden = !hidden;
}
});
}
然后你可以打电话
setClickListener(view1, view2);
setClickListener(view3, view4);
...
我认为只为该方法创建一个类很有用,但显然你可以。
答案 2 :(得分:0)
将此视图包含在您的活动的XML文件中,如下所示:
<your.package.CustomLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.LinearLayout;
/**
* Created by ozgur on 09.06.2016.
*/
public class CustomLayout extends LinearLayout {
private View view1;
private View view2;
private boolean hidden;
public CustomLayout(Context context) {
super(context);
init(context);
}
public CustomLayout(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
public CustomLayout(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context);
}
private void init(Context context) {
//inflate the view that contains your view1, view2
View wrapper = inflate(context, R.layout.view_custom_layout, this);
view1 = wrapper.findViewById(R.id.view1);
view2 = wrapper.findViewById(R.id.view2);
view1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
if (hidden) {
view2.setVisibility(View.GONE);
hidden = false;
} else {
view2.setVisibility(View.VISIBLE);
hidden = true;
}
}
});
}
}