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

listview의 내용을 db에 저장하려고 하는데 어떻게 해야 할까요?

0 추천
public class MainActivity extends Activity {


    private BluetoothAdapter myBluetoothAdapter;
    private ListView myListView;
    private ArrayAdapter<String> BTArrayAdapter;
 

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

myListView = (ListView)findViewById(R.id.listView1);

           // 블루투스 어답터 생성
            BTArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);

            myListView.setAdapter(BTArrayAdapter);

            //ListView의 아이템 하나가 클릭되는 것을 감지하는 Listener객체 설정
            myListView.setOnItemClickListener(listner);


 //블루투스 기기 등록 버튼
            RegisterButton = (Button)findViewById(R.id.registerButton);

            //블루투스 기기 등록버튼 누르면 실행되는 내용들 정의
            RegisterButton.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    String userName = macEdit.getText().toString();

                    Response.Listener<String> responseListener = new Response.Listener<String>(){
                        @Override
                        public void onResponse(String response){
                            try{
                                JSONObject jsonResponse = new JSONObject(response);
                                boolean success = jsonResponse.getBoolean("success");
                                if(success){
                                    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                                    builder.setMessage("블루투스 등록 성공").setPositiveButton("확인",null).create().show();
                                }else{
                                    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                                    builder.setMessage("블루투스 등록 실패").setNegativeButton("확인",null).create().show();

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

                    RegisterRequest registerRequest = new RegisterRequest(userID, userName, responseListener);
                    RequestQueue queue = Volley.newRequestQueue(MainActivity.this);
                    queue.add(registerRequest);

                }
            });

   }
}


AdapterView.OnItemClickListener listner = new AdapterView.OnItemClickListener() {
        //ListView의 아이템 중 하나가 클릭될 때 호출되는 메소드
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            //클릭된 아이템의 위치를 이용하여 데이터인 문자열을 Toast로 출력
            Toast.makeText(MainActivity.this, BTArrayAdapter.getItem(position), Toast.LENGTH_SHORT).show();
            // macEdit(Edittext)에 클릭한 블루투스 정보를 보여줌.
           macEdit.setText(BTArrayAdapter.getItem(position));
        }
    };


안녕하세요 안드로이드 초보 학생입니다. 

제가 블루투스를 통하여 출석체크 하는 어플리케이션을 만드려고 하고있습니다. 

제가 listview에 블루투스 기기들을 찾아서 listview 띄우는것까지는 성공을 하였습니다. 

그러나 이 listview를 어떻게 저장해야 할지 모르겠습니다. 

제가 지금 구현한 것은 listview 의 setOnItemClickListener 를 이용하여 

listview하나를 클릭하면 edittext로 다시 띄워지고  

이 edittext의 내용을 저장하는것 밖에 찾을 수가 없었습니다.. 

listview -> edittext -> db(mysql) 서버로 저장을 하게 되는데  

listview -> db(mysql) 로 바로 저장을 하는 방법이 있을까요..?

아니면 for문을 돌려야 하는지.. 

익명사용자 님이 2017년 5월 11일 질문

1개의 답변

+1 추천
리스트뷰의 아이템뷰를 EditText로 쓰는것은 자제하셔야합니다.

어댑터를 어떻게 구현하셨는지 모르겠지만 기본적으로 리스트뷰에서의 아이템뷰를 재활용하여 쓰는 식으로 구현하기 때문에

EditText를 온전히 쓰려면 굉장히 고생합니다.

고로 OnItemClickListener에서 새로운 액티비티 등을 띄워 원하는 데이터를 입력받고 DB에 기록 하시기 바랍니다.

또한 말씀하신 ListView 등에서 DB로 직접 접근 하게 되는방식은

 

MVC패턴에 위반되는 방식이라 비추합니다.
Charlesz (4,420 포인트) 님이 2017년 5월 11일 답변
아 edittext를 다시 이용하는게 어렵군요.. 답변 정말 감사드립니다!
 액티비티를 새로 띄워서 다시 도전해봐야겠습니다. !
뭔가 처음들어보는 논리네요.
...