多个if/else语句难题



新问题。所以,我正在制作可点击的文本部分,可以展开和收缩以显示来自一个非常有用的教程的更多文本,但我被困在最后一部分。文本部分有一个if/else语句,用于将内容从GONE切换到VISIBLE。但是现在我试图调整代码以包含更多的else语句,我不知道条件应该是什么。

    public class AlabamaActivity extends AppCompatActivity {
         TextView registration_info;
         TextView info2;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_alabama);
    registration_info = (TextView)findViewById(R.id.registration_info);
    // hidden until its title is clicked
    registration_info.setVisibility(View.GONE);
    info2 = (TextView) findViewById(R.id.info2);
    info2.setVisibility(View.GONE);

    public void toggle_contents(View v) {
    if (registration_info.isShown()){
        Fx.slide_up(this, registration_info);
        registration_info.setVisibility(View.GONE);
    }
    else if (//?????){
        registration_info.setVisibility(View.VISIBLE);
        Fx.slide_down(this, registration_info);
    }
    else if (info2.isShown()){
        Fx.slide_up(this, info2);
        info2.setVisibility(View.GONE);
    }
    else if (//?????){
        info2.setVisibility(View.VISIBLE);
        Fx.slide_down(this, info2);
    }
    ...

这是我试图调整的原始if/else语句。

    public void toggle_contents(View v) {
    if (registration_info.isShown()){
        Fx.slide_up(this, registration_info);
        registration_info.setVisibility(View.GONE);
    }
    else {
        registration_info.setVisibility(View.VISIBLE);
        Fx.slide_down(this, registration_info);
    }

我在过去的几个小时里试了试错,我在网上得到的结果对像我这样的新手来说有点太多了。

另外,我一直在想我是否可以做这个开关/箱子?

谢谢!

编辑—尽量不要笑lol

Fx code

        public static void slide_down(Context ctx, View v) {
    Animation a = AnimationUtils.loadAnimation(ctx, R.anim.slide_down);
    if (a != null) {
        a.reset();
        if (v != null) {
            v.clearAnimation();
            v.startAnimation(a);
        }
    }
}
public static void slide_up(Context ctx, View v){
    Animation a = AnimationUtils.loadAnimation(ctx, R.anim.slide_up);
    if(a != null){
        a.reset();
        if(v != null){
            v.clearAnimation();
            v.startAnimation(a);
        }
    }
}
}

滑下来

    <set xmlns:android="http://schemas.android.com/apk/res/android"
                    android:fillAfter="true">
    <scale
    android:duration="200"
    android:fromXScale="0.0"
    android:fromYScale="1.0"
    android:interpolator="@android:anim/linear_interpolator"
    android:toXScale="1.0"
    android:toYScale="1.0" />
    </set>

幻灯片

    <set xmlns:android="http://schemas.android.com/apk/res/android"
                       android:fillAfter="true">
    <scale
    android:duration="200"
    android:fromXScale="1.0"
    android:fromYScale="1.0"
    android:interpolator="@android:anim/linear_interpolator"
    android:toXScale="1.0"
    android:toYScale="0.0" />
   </set>
xml:

    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/Alabama">
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">
    <TextView
        android:id="@+id/registration"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Registration"
        android:textSize="20sp"
        android:clickable="true"
        android:onClick="toggle_contents"
        android:paddingLeft="16dp"
        android:paddingBottom="16dp"/>
    <!--content to hide/show -->
    <TextView
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:id="@+id/registration_info"
        android:text="info here"
        android:paddingLeft="16dp"
        android:paddingBottom="16dp"/>
    <TextView
        android:id="@+id/info2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Info2"
        android:textSize="20sp"
        android:clickable="true"
        android:onClick="toggle_contents"
        android:paddingLeft="16dp"
        android:paddingBottom="16dp"/>
    <!--content to hide/show -->
    <TextView
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:id="@+id/info2"
        android:text="info here"
        android:paddingLeft="16dp"
        android:paddingBottom="16dp"/>

这应该可以完成工作,[目前]:

public void toggle_contents(View v) {
    // first set
    if (registration_info.isShown()){ 
        Fx.slide_up(this, registration_info);
        registration_info.setVisibility(View.GONE);
    } 
    else { 
        registration_info.setVisibility(View.VISIBLE);
        Fx.slide_down(this, registration_info);
    } 
    // second set
    if (info2.isShown()){ 
        Fx.slide_up(this, info2);
        info2.setVisibility(View.GONE);
    } 
    else { 
        info2.setVisibility(View.VISIBLE); 
        Fx.slide_down(this, info2); 
    } 

[编辑]

根据你更新的帖子,我相信这应该足够了:

public void toggle_contents(View v) {
    if (v.isShown()){
        Fx.slide_up(this, v);
        v.setVisibility(View.GONE);
    }
    else {
        v.setVisibility(View.VISIBLE);
        Fx.slide_down(this, v;
    }

[EDIT2]

既然,你将点击监听器附加到一个textview和扩展/折叠另一个,切换情况似乎走的路:

public void toggle_contents(View v) {
    View childTV;
    switch(v.getId()) {
        case R.id.registration:
             childTV = findViewById(R.id.registration_info);
        // Can add more cases here
        default:
             childTV = findViewById(R.id.info2_child);
    }
    if (childTV.isShown()){ 
        Fx.slide_up(this, childTV);
        childTV.setVisibility(View.GONE);
    } 
    else { 
        childTV.setVisibility(View.VISIBLE);
        Fx.slide_down(this, childTV);
    } 
}

注意:目前,您的两个视图在xml中的id为info2。我在上面取了一个假id,你应该相应地修复它。

最新更新