힝구힝구
192
2020-11-18 11:34:37
4
178

안드로이드 for문으로 변수 값 넣어주기 관련 질문입니다.


안녕하세요, 다음과 같이 선언되있는 UI에 for문으로 데이터를 집어넣고 싶습니다.


ImageView simArticleImg1 = view.findViewById(R.id.simArticleImg1);
TextView simArticleTitle1 = view.findViewById(R.id.simArticleTitle1);
TextView simArticleCon1 = view.findViewById(R.id.simArticleCon1);

ImageView simArticleImg2 = view.findViewById(R.id.simArticleImg2);
TextView simArticleTitle2 = view.findViewById(R.id.simArticleTitle2);
TextView simArticleCon2 = view.findViewById(R.id.simArticleCon2);

ImageView simArticleImg3 = view.findViewById(R.id.simArticleImg3);
TextView simArticleTitle3 = view.findViewById(R.id.simArticleTitle3);
TextView simArticleCon3 = view.findViewById(R.id.simArticleCon3);

그리고 arrayList<Hashmap<String, String>> 형태를 가진 arraylist 하나가 있습니다.

이름은 relevantArticleArrayList입니다.

그리고 url 이라는 String 타입의 배열 안엔 다음과 같은 기사 사진 데이터가 있습니다. (서버 주소있어서 가렸습니다)


그리고 releavantArticleArrayList 안에는 다음과 같은 기사 정보들이 있습니다.

각각 url[0], url[1], url[2]의 기사 사진과 대응하는 기사정보입니다.


이제 여기서 Glide를 이용해서 각 기사에 맞게 맵핑을 하고 셋팅을 해주고싶은데..
코드가 다음과 같습니다.

//1번 기사 정보 세팅
HashMap<String, String> map = relevantArticleArrayList.get(0);
if(url[0] != null)
Glide.with(this).load(url[0]).into(simArticleImg1);
else{
simArticleImg1.setImageResource(R.drawable.img_noimg);
simArticleTitle1.setText(map.get("articleName"));
simArticleCon1.setText(map.get("articleContent"));

//2번 기사 정보 세팅
map = relevantArticleArrayList.get(1);
if(url[1] != null)
Glide.with(this).load(url[1]).into(simArticleImg2);
else
simArticleImg2.setImageResource(R.drawable.img_noimg);
simArticleTitle2.setText(map.get("articleName"));
simArticleCon2.setText(map.get("articleContent"));

//3번 기사 정보 세팅
map = relevantArticleArrayList.get(2);
if(url[2] != null)
Glide.with(this).load(url[2]).into(simArticleImg3);
else
simArticleImg3.setImageResource(R.drawable.img_noimg);
simArticleTitle3.setText(map.get("articleName"));
simArticleCon3.setText(map.get("articleContent"));

이렇게 반복되는 정보를 배열 숫자만 바꿔서 세팅해주고있습니다.

한눈에 봐도 비효율적인거같아서.. 혹시 for문으로 셋팅하는 방법이 있을까요? ㅠㅠ

기사가 무조건 3개 넘어온다는 보장도 없어서 nullPointerException에도 취약합니다.

for문과 기사 배열의 사이즈에 맞게 변수에 값을 넣어줄 수 있는.. 그런 코딩할 수 있는 방법이 있을까 해서 여쭤봅니다.


0
  • 답변 4

  • CyanGlint
    785
    2020-11-18 12:46:56
    recyclerview를 공부하실때가 된것 같네요
  • 힝구힝구
    192
    2020-11-18 14:19:52

    CyanGlint


    recyclerview 알고있긴한데.. 이게 그거랑 관계가있나요..?

  • OkkyActivity
    389
    2020-11-18 15:00:59

    getIdentifier 를 사용하세여




    TextView[] titleArr = ....;
     
    for (int i=0; i<10; i++) {
        titleArr[i] = getResources().getIdentifier("simArticleTitle" + i, "id", getPackageName());
    }





  • 힝구힝구
    192
    2020-11-18 16:37:42

    OkkyActivity

    이런게 있었군요 ㄷㄷ 감사합니다!!

  • 로그인을 하시면 답변 을 등록할 수 있습니다.