마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

switch 문을 어떻게 구성을 해주어야 할지 잘 모르겠어요.

0 추천

 

안녕하세요.

아래의 소스를 보면, 이미지뷰로 된 bell_image 이미지를 눌렀을 경우에, 팝업 다이얼로그 창이 뜨게 만들었는데 그 창에 이미지가 각각 다른것이 떠야합니다. ( case 0에는 a1, case1에는 b1, case2에는 c1 )

a1과 b1,c1의 이미지는 @drawable에 저장이 되어 있습니다.

아래의 switch가 잘 동작한다고 생각을 했을떄, case문을 어떻게 해줘야 팝업 부분에 각각 경우마다 다른

a1과 b1,c1의 이미지가 뜨게 될까요 ..

 

switch( 작동한다고 가정했을때 )

{

      case 0:

       // 팝업메세지 창이 뜨도록, 대신에 a1의 이미지가 되도록 해야함

 

      case 1:

       // 팝업 메세지 창이 뜨도록, 대신에 b1의 이미지가 되도록 해야합니다.

}

 

< 이미지를 누를때, 팝업 메세지가 출력되는 코드입니다. >

Bell = (ImageView) findViewById(R.id.bell_image);
Bell.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Bell_Image_Custom_Dialog dialog = new Bell_Image_Custom_Dialog(First_Movie.this);
        dialog.show();

    }
});

 

다이얼로그 부분의 코드입니다.

import android.app.Dialog;
import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.ImageView;

public class Bell_Image_Custom_Dialog extends Dialog {

    ImageView Movie_Instruction;

    public Bell_Image_Custom_Dialog(Context context) {

        super(context);

        setContentView(R.layout.activity_bell__image__custom__dialog);

         // Movie_Instruction = (ImageView) findViewById(R.id.imageView2);
         // Movie_Instruction.setOnClickListener(this);

    }
}
Kind카인드 (3,600 포인트) 님이 2016년 11월 3일 질문

1개의 답변

+1 추천
아래처럼 switch 문에 사용할 변수를 Bull_Image_Custom_Dialog 생성자에 인자로 넘겨줘서 인자에 맞게 이미지만 바꾸면 되지 않나요?

 

Bell = (ImageView) findViewById(R.id.bell_image);
Bell.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Bell_Image_Custom_Dialog dialog = new Bell_Image_Custom_Dialog(First_Movie.this, index);
        dialog.show();

    }
});

-------------------------------------------------------------------------------------------------

public class Bell_Image_Custom_Dialog extends Dialog {

    ImageView Movie_Instruction;

    public Bell_Image_Custom_Dialog(Context context, int index) {

        super(context);

        setContentView(R.layout.activity_bell__image__custom__dialog);

        Movie_Instruction = (ImageView) findViewById(R.id.imageView2);
        switch(index) {
        case 0:
            Movie_Instruction.setImageResource(R.drawable.xxxxx);
            break;
        case 1:
            Movie_Instruction.setImageResource(R.drawable.yyyyy);
            break;
        }

    }
}
바램 (19,650 포인트) 님이 2016년 11월 3일 답변
으 ㅠㅠ 말씀해주신걸 토대로, 제 코드에 적용을 시켜보려고 하는데..

 제가 너무 어렵게 생각하는건지.. 너무 헷갈립니다.

쉽지가 않네요 ㅠㅠ 말씀해주신걸 토대로 코드를 작성해 보았는데

괜히 더 어지러워 질것 같아서 일단 제 코드들을 깔끔하게 정리해서 다시 한번 올려보겠습니다.



다른것은 볼 필요가 없고, switch부분에서 그냥 이미지뷰에 맞게 각 case별로 이미지를 넣는 부분입니다.

이걸 토대로, 저도 벨 이미지를 눌렀을 경우에, 각 팝업창에 이미지들이 다른것이 뜨게 하고 싶습니다.

이 부분에서 벨 이미지를 눌렀을 경우에, 아래의 switch를 통해서 처리가 되도록 하고 싶습니다.

각 case 별로(case 0 에서는 a1, case1 에서는 b1, case2 에서는 c1)

혹시 이 방법이 비효율적이거나, 안된다고 생각하시면 말씀해주시면 정말 감사드리겠습니다.



아래의  코드는 First_Movie의 자바 부분입니다.


package ex.real_project;

import android.content.Intent;
import android.media.Image;
import android.support.annotation.DrawableRes;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.HorizontalScrollView;
import android.widget.ImageView;
import android.widget.RatingBar;
import android.widget.TextView;
import android.widget.Toast;

import org.w3c.dom.Text;

import java.util.ArrayList;

public class First_Movie extends AppCompatActivity {

    ImageView First_Activity;
    ImageView Before_Activity;
    ImageView Bell;
    Button Show_More_Button;
    TextView txt1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first__movie);

        int position = getIntent().getIntExtra("pos",0);

        First_Activity = (ImageView) findViewById(R.id.Top_Image_button);
        First_Activity.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(getApplicationContext(),Login_Activity.class);
                startActivity(intent);
            }
        });

        Before_Activity = (ImageView) findViewById(R.id.Before_Activity);
        Before_Activity.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                finish();
            }
        });



        Bell = (ImageView) findViewById(R.id.bell_image);
        Bell.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Bell_Image_Custom_Dialog dialog = new Bell_Image_Custom_Dialog(First_Movie.this);
                dialog.show();

            }
        });

        txt1 = (TextView) findViewById(R.id.Seventh_TextView2);

        Show_More_Button = (Button) findViewById(R.id.Show_More_Button);
        Show_More_Button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                /*
                if (txt1.getMaxLines() ==4) {
                    txt1.setMaxLines(1000);
                } else {
                    txt1.setMaxLines(4);
                }
                    */
            }
        });


        switch(position)
        {

            case 0:
              
                 // 이 부분에서, 각 이미지에 맞게 다이얼로그를 호출을 해야할거 같습니다.
        // 각 case별로 (R.id.a1) , (R.id.b1) , (R.id.c1) .. 등등으로요

                TextView First_Movie_Name = (TextView) findViewById(R.id.Movie_name);
                First_Movie_Name.setText(R.string.First_Movie_Name);

                ImageView Age_Icon_1 = (ImageView) findViewById(R.id.age_icon);
                Age_Icon_1.setImageResource(R.drawable.icon_19);

               
                break;

            case 1:
              
                TextView Second_Movie_Name = (TextView) findViewById(R.id.Movie_name);
                Second_Movie_Name.setText(R.string.Second_Movie_Name);

                ImageView Age_Icon_2 = (ImageView) findViewById(R.id.age_icon);
                Age_Icon_2.setImageResource(R.drawable.icon_15);

                break;

            case 2:
               
                TextView Third_Movie_Name = (TextView) findViewById(R.id.Movie_name);
                Third_Movie_Name.setText(R.string.Third_Movie_Name);

                ImageView Age_Icon_3 = (ImageView) findViewById(R.id.age_icon);
                Age_Icon_3.setImageResource(R.drawable.icon_12);

              
                break;

            case 3:
             
                TextView Fourth_Movie_Name = (TextView) findViewById(R.id.Movie_name);
                Fourth_Movie_Name.setText(R.string.Fourth_Movie_Name);

                ImageView Age_Icon_4 = (ImageView) findViewById(R.id.age_icon);
                Age_Icon_4.setImageResource(R.drawable.icon_12);

                break;

            case 4:
              
                TextView Fifth_Movie_Name = (TextView) findViewById(R.id.Movie_name);
                Fifth_Movie_Name.setText(R.string.Fifth_Movie_Name);

                ImageView Age_Icon_5 = (ImageView) findViewById(R.id.age_icon);
                Age_Icon_5.setImageResource(R.drawable.icon_all);

               
                break;
        }

    }
}
Bell_Image_Custom_Dialog 의 자바부분입니다.


package ex.real_project;

import android.app.Dialog;
import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.ImageView;

public class Bell_Image_Custom_Dialog extends Dialog {

    ImageView Movie_Instruction;

    public Bell_Image_Custom_Dialog(Context context) {

        super(context);

        setContentView(R.layout.activity_bell__image__custom__dialog);

         Movie_Instruction = (ImageView) findViewById(R.id.imageView2);


    }
}


Bell_Image_Custom_Dialog. 의 xml 부분입니다.


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_bell__image__custom__dialog"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="ex.real_project.Bell_Image_Custom_Dialog">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    <ImageView
        android:id="@+id/imageView2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:srcCompat="@drawable/icon_12" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/imageView2"
            android:background="@drawable/white_round_button"
            android:layout_alignParentRight="true"
            android:text="확인" />


    </RelativeLayout>
</RelativeLayout>
바램님 며칠전에, 답변 달아주신걸 계속해서 보면서, 해보고있는데.. 제가 윗부분에 만들어 놓은 코드 한번만 보고 답변 부탁드려도 될까요..?
...