2016-08-13 4 views
0

Newb вопрос. Итак, я делаю разделы текста, которые можно щелкнуть, и они могут расширяться и сокращаться, чтобы показать больше текста из очень полезного учебника, но я застрял на последней части. Существует инструкция if/else для текстового раздела, который переключает контент с GONE на VISIBLE. Но теперь я пытаюсь настроить код, чтобы включить более подробные инструкции, и я не могу понять, какое условие должно быть.несколько если/else заявление conundrum

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); 
    } 

Я пытался проб и ошибок за последние несколько часов, и результаты, которые я получаю в Интернете немного много для NEWB, как я.

Кроме того, мне было интересно, могу ли я сделать этот переключатель/случай вместо этого?

Спасибо!

EDIT --- стараюсь не смеяться лол

Fx код

 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"/> 
+0

Я думаю, если у вас есть одно условие и у вас есть много 'if-else', то в этом случае Switch выполнит эту работу. Если у вас есть 2 разных условия, тогда 'if-else' является хорошей идеей – Smit

+0

Откуда вы называете' toggle_contents'? – Shaishav

+0

Основной вид деятельности. Я добавил остальных – Emily

ответ

0

Это должно сделать работу, [сейчас]:

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); 
    } 

[EDIT]

на основе обновленной пост, я считаю, что это должно быть достаточно:

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); 
    } 

} 

ПРИМЕЧАНИЕ: В настоящее время два из ваших представлений имеют идентификатор, как info2 в xml. Я взял фиктивный id выше, вы должны исправить его соответствующим образом.

+0

У меня было это некоторое время, но когда он запускается на моем телефоне, он не ведет себя правильно. У меня есть список интерактивных текстовых просмотров, которые при нажатии на них должны расширяться, чтобы отобразить больше текста. Проблема с этим^заключается в том, что когда вы нажмете на один, все они будут расширяться, а не только тот, который был нажат. – Emily

+0

@Emily вам нужно больше поделиться своим кодом, особенно Fx.slide_down/up – Shaishav

+0

См. Edit ....... – Emily