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

안드로이드 스튜디오 로또어플을 만들고 있는데 intent > listView 질문좀 드립니다.

0 추천
for (int i = 0; i < lotto.length; i++){
                lotto[i] = (int)(Math.random()*45)+1;

               for (int j = 0; j < i; j++){
                    if (lotto[i] == lotto[j]){
                        i--;
                     break;
                   }
                }
            }

            num1.setText(Integer.toString(lotto[0]));
           num2.setText(Integer.toString(lotto[1]));
           num3.setText(Integer.toString(lotto[2]));
           num4.setText(Integer.toString(lotto[3]));
           num5.setText(Integer.toString(lotto[4]));
           num6.setText(Integer.toString(lotto[5]));
 
일단 랜덤 번호를 생성하여 택스트뷰에 넣어 화면에 띄워놓았습니다.
생성된 이 번호들을 intent로 다음 화면에 listView로 지금까지 생성한
번호 목록을 띄우고 싶습니다.
listView에 띄운 번호들은 어플을 꺼도 저장이 되어있고
사용자가 선택하여 삭제 하고싶은데 어떻게 해야될까요??
안드로이드똑 (200 포인트) 님이 2020년 7월 23일 질문

2개의 답변

0 추천

SharedPreferences를 쓰면 되지 않을까여?

익명사용자 님이 2020년 7월 24일 답변
감사합니다. 제가 초보자라 이해가 잘안돼서...
혹시 가능하시면 대략 코드 좀 부탁드려도 될까요?ㅠㅠ
배열을 문자열로 만들어서

Intent intent = getIntent();

        String array[] = intent.getExtras().getStringArray("listData");
        String add_array="";
        for(int i=0;i<array.length;i++){
            add_array+=array[i]+"  ";
        }

        list.setText(add_array);
    }

이렇게 다음 액티비티에서 가져오는것까진 성공했습니다.

문제는 문자열이 6개씩 한줄로 나오는 것이 아니고 계속 붙어서 나오는 것,
\n으로 줄바꿈 할시 한줄에 숫자 하나씩 나오게 되는데
어떻게 줄바꿈을 해야할까요?ㅠ

또한 SharedPreferences 를 대략적으로라도 쓰는 방법 좀 부탁드립니다ㅠ
0 추천
배열을 문자열로 만들어서 preference에 넣거나, sqlite 같은 db를 쓰시면 됩니다.
쎄미 (162,410 포인트) 님이 2020년 7월 24일 답변
감사합니다. 제가 초보자라 이해가 잘안돼서...
혹시 가능하시면 대략 코드 좀 부탁드려도 될까요?ㅠㅠ
배열을 문자열로 만들어서

Intent intent = getIntent();

        String array[] = intent.getExtras().getStringArray("listData");
        String add_array="";
        for(int i=0;i<array.length;i++){
            add_array+=array[i]+"  ";
        }

        list.setText(add_array);
    }

이렇게 다음 액티비티에서 가져오는것까진 성공했습니다.

문제는 문자열이 6개씩 한줄로 나오는 것이 아니고 계속 붙어서 나오는 것,
\n으로 줄바꿈 할시 한줄에 숫자 하나씩 나오게 되는데
어떻게 줄바꿈을 해야할까요?ㅠ

또한 SharedPreferences 를 대략적으로라도 쓰는 방법 좀 부탁드립니다ㅠ
1,2,3,4,5,6|7,8,9,10,11,12| 이런식으로 문자열을 만들고, |로 자르면 한 회차의 번호가 만들어지겠죠?
SharedPreferences 예제는 널리고 널렸으니 설명하는 것보다는 구글링하는게 훨씬 빠릅니다.
| 로 문자열을 만드는 것과 |로 자르라는 것이 무슨 말씀이신지 잘 이해가 안됩니다ㅠ
코드로 보여주실수 있을까요?ㅠㅠㅠ
A에서 만든 숫자가 있을거고, 그걸 B로 넘겨서 제대로 표시하는 거 잖아요? 보통은 더 복잡한 방법을 쓰지만 손쉽게 하려면 A에서 만든 숫자를 1회차 별로 묶고, 여러 회차를 만들면 여러 회차로 표시해야하고요.
그럼 1회차 숫자들은 ,로 구분하고, 여러 회차 구분은 |로 하면 된다고요.  
"1,2,3,4,5,6|7,8,9,10,11,12" 라는 문자열을 B로 넘겨주면, B에서는 |를 기준으로 잘라서 여러 회차를 표시하면 되고요.
여러 방법으로 시도해 보고있는데 이해를 못한 상태에서 하는게 어렵네요...
코드로 보여주시는건 힘들까요?ㅠ
그리고 일단 텍스트뷰가 쉬워 텍스트뷰로 나타내게 하긴 하였는데
리스트뷰로 나타내고 싶습니다.ㅠ
1. 리스트뷰 사용법을 몰라서 그런가요
2. SharedPreferences 사용법을 몰라서 그런가요
3. 다른 액티비티에서 넘어온 문자열을 파싱을 못해서 그런가요
일단 뭘 모르고 있는지를 확실히 알려주시는게 답변 다는 분들에게 도움이 될 것 같아요.
일단 저 상태에서 숫자들을 문자열 배열에 넣어 다음 액티비티로 넘기는 것까진
성공하였습니다.
그 다음 액티비티에서 리스트뷰에 순서대로 저장을 시키고 싶은데
넘겨받은 문자열 배열을 Adapter에 어떻게 사용해서 Listview에 넣어야 할지,
이후 SharedPreferences 로 리스트뷰에 회차를 순서대로
차곡차곡 저장을 시키는 법을 모르겠습니다..ㅠㅠ
adapter를 사용해서 listview에 넣으면 회차 숫자 배열이 아닌 숫자 하나당 한줄씩 나옵니다ㅠㅠ

String array[] = intent.getExtras().getStringArray("listData");
        String add_array = "";
        for (int i = 0; i < array.length; i++) {
            add_array += array[i] + "  ";
        }
        ArrayAdapter<String> adapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,array);
        list.setAdapter(adapter);
    }
그리고 추가로 방금 찾은 문제인데
회차를 한번더 뽑지 않아도 다시 리스트 액티비티로 들어가게되면
똑같은 번호가 다시 저장되는 문제가 있습니다...
이건 어떻게 해야할까요
String array[] = intent.getExtras().getStringArray("listData");
        String add_array = "";
        for (int i = 0; i < array.length; i++) {
            add_array += array[i] + "  ";
        }
        ArrayList<String> arrData = new ArrayList<String>();
        Collections.addAll(arrData,add_array);
        ArrayAdapter<String> adapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,arrData);
        list.setAdapter(adapter);
    }

숫자들을 다시 배열로 묶어서 띄우는 방법으로 한줄로 나오게는 성공하였는데
뒤로갔다 다시 오면 똑같은 번호가 연결되서 나옵니다ㅠㅠ

어떻게 리스트뷰의 다음줄에 나오게 해야할까요...

회차를 뽑지 않고 들어가게되면 같은 번호가 저장되는 문제도 어떻게 해야될지요..
같은 번호가 나오는 건 String array[] = intent.getExtras().getStringArray("listData"); 이 부분이 onCreate()에서 딱 한 번만 불러야하지 않을까 싶고요, 리스트뷰에 여러 줄 표시하는 건 adapter에 들어가는 arraylist 모양이 어떻게 생겼는지 확인해보세요.
String array[] = intent.getExtras().getStringArray("listData");
이부분은 이미 온크리에이트에서 한번만 부르고 있습니다..
intent로 액티비티가 넘어가면서 onCreate()가 되어
계속해서 같은 번호가 나오는것 같은데
해결 방법을 모르겠습니다ㅠㅠ
이 쯤이면 차라리 코드를 다 올리시는게 나을 것 같아요.
혹시 따로 연락 드릴수있는 수단 있을까요?ㅠ
코드 캡쳐해서 보내드리겠습니다
여기 게시판에 코드 올려서 물어보라고 있으니 이 시스템을 이용하세요. 공개해도 되는 코드면 github에 올린 후 링크를 적으셔도 되고요. 제가 아니라 누군가 답변해줄 겁니다.
쎄미님 도움주셔서 감사합니다ㅠ
만들고 있던건 막히는부분이 너무 많아
쉐어드프리퍼런스를 사용해 다시 만들어볼까 합니다
구글링해서 도전해보았지만 혼자서는 어려울꺼 같아
조언도 구하면서 열심히 공부해보겠습니다!
감사합니다!
어디서 어떻게 안되는지 목록을 적어서 하나씩 해결해보세요...
...