안드로이드 서버에서 넘겨받은 데이터 다른 액티비티로 넘기기

조회수 849회

개발도구 : 안드로이드 스튜디오, 카페24서버(DB), php, MySql

게시판을 만들고있습니다. 현재 DB에 저장 된 게시글들의 제목을 리스트뷰로 표현하는것 까지 했습니다. 이제 제목이 적힌 리스트뷰를 클릭하면 다른 액티비티로 넘어가며 제목/작성자/날짜/내용 이렇게 나오는걸 구현중입니다.


BackgroundTask2중 onPostExecute의 내용입니다.

        @Override
        protected void onPostExecute(String result) {

            try {
                JSONObject jsonObject = new JSONObject(result);
                JSONArray jsonArray = jsonObject.getJSONArray("response");
                int count = 0;
                String POST_TITLE, POST_USER, POST_TS , POST_CONTENT;

                while(count < jsonArray.length()) {
                    JSONObject object = jsonArray.getJSONObject(count);
                    POST_TITLE = object.getString("POST_TITLE");
                    POST_USER = object.getString("POST_USER");
                    POST_TS = object.getString("POST_TS");
                    POST_CONTENT = object.getString("POST_CONTENT");

                    BoardSelect boardSelect = new BoardSelect(POST_TITLE, POST_USER, POST_TS, POST_CONTENT);
                    boardSelectList.add(boardSelect);
                    count++;
                }

            } catch (Exception e) {
                e.printStackTrace();
            }
        }

위 코드가 리스트뷰를 클릭하면 가져올 DB의 데이터들입니다. Sysout으로 찍으니 데이터가 차곡차곡 잘 들어오더라구요. 이렇게 가져오는것까진 했는데 이대로 intent를 넘기면 DB에 있는 모든 내용이 같이 넘어가지더군요. 리스트뷰를 클릭하면 해당 리스트뷰의 데이터들만 따로 뽑아서 액티비티에 뿌려주는걸 어떻게 구현해야할지 모르겠습니다.


        //글 조회
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Intent intent = new Intent(MainActivity.this, SelectActivity.class);

                new BackgroundTask2().execute();


            }
        });

제 생각엔 리스트뷰를 클릭했을 때 position으로 뭘 어떻게하면 될거같은데... 구글링으로 이것저것 해봐도 안 돼서 질문 올립니다...

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • 글쎄요.. 앱은 모르겠지만 웹 개발이라면 보통 이럴때는 그 게시물 고유번호만 가지고 DB 자료를 얻어오는 작업을 새로 해서 그 결과를 새 화면에 뿌립니다. 엽토군 2020.4.20 11:36

2 답변

  • 리스트뷰에 넘겨준 DB의 데이터 리스트에서 클릭된 리스트뷰의 position에 맞는 데이터만 추출하시면 됩니다.

    • 제가 적은 코드처럼 setOnItemClickListener에 BackgroundTask2 넣어서 데이터를 넘겨주는건 맞나요? 알 수 없는 사용자 2020.4.20 16:18
    • 방법이야 여러가지입니다만 지금 코드를 보면 클릭시 DB에 저장된 모든 데이터를 불러오는 것으로 보입니다. 그러지 말고 아이템 클릭시 해당 아이템의 제목에 해당하는 내용들만 DB에서 가져와서 처리하세요. 주동혁 2020.4.21 09:54
  •                 POST_TITLE = object.getString("POST_TITLE");
                    POST_USER = object.getString("POST_USER");
                    POST_TS = object.getString("POST_TS");
                    POST_CONTENT = object.getString("POST_CONTENT");
    

    이부분을 하나씩 String으로 받지말고 그냥 배열에 집어 넣으면 됩니다

    ArrayList<String> POST_TITLE = new ArrayList<>();
    
    POST_TITLE.add(object.getString("POST_TITLE") 
    

    이런식으로 배열을 만들어서 집어 넣어주면

        //글 조회
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Intent intent = new Intent(MainActivity.this, SelectActivity.class);
                //리스트 포지션 = 배열 포지션
                intent.putExtra("POST_TITLE",POST_TITLE.get(position));
               //이런식으로 하면 클릭된 위치에 있는 제목이 넘어가겠죠?
    
            new BackgroundTask2().execute();
    
    
            }
        });
    
    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)