2016-08-13 6 views
0

Newb質問です。 私は、クリック可能なテキストのセクションを作成しており、非常に参考になるチュートリアルからより多くのテキストを表示するように拡張したり縮小したりできますが、最後の部分は固まっています。コンテンツをGONEからVISIBLEに切り替えるテキストセクションのif/elseステートメントがあります。しかし、今では、より多くのelseステートメントを含めるようにコードを調整しようとしています。条件が何であるべきかを理解できません。複数のif/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 ---

<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ダウンスライド

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

Fxのコード笑笑うしないようにしよう:

<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

私はあなたが1つの条件を持っていて、多くの 'if-else'を持っていると推測します。 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]

あなたの更新のポストに基づいて、私は、これは十分なはずと信じて:

​​

[EDIT2]

、あなたは1つの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); 
    } 

} 

注:現在、あなたの意見の2は中info2としてIDを持っていますXML。私は上記のダミーidを取ったので、それに応じて修正する必要があります。

+0

私はしばらくこれを持っていましたが、それが私の電話機で動いているときに正しく動作しません。クリック可能なテキストビューのリストがあり、クリックすると拡大してより多くのテキストを表示する必要があります。この問題は、クリックしたときにクリックされたものだけでなく、すべてが展開されるということです。 – Emily

+0

@Emilyあなたのコードをもっと共有する必要があります。特にFx.slide_down/up – Shaishav

+0

編集を参照してください....... – Emily