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

listview 선택시 db값 넘기기

0 추천

 

public class listActivity extends Activity {

    private static final String TAG = "listActivity";
    private DBHandler dbHandler;
    private DbOpenHelper mDbOpenHelper;
    private ArrayList<ListDto> mInfoArray;
    private ListAdapter mAdapter;


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

        setLayout();

        mDbOpenHelper = new DbOpenHelper(this);
        try {
            mDbOpenHelper.open();
        } catch (SQLException e) {
            e.printStackTrace();
        }
/*
        mDbOpenHelper.insertColumn("a", "a@naver.com", "010-1234-5678", "naver", "addr", "bb", "www.a.com", null);
        mDbOpenHelper.insertColumn("b", "b@naver.com", "010-2345-3456", "daum", "144", "233", "www.b.com", null);
*/
        // 리스트뷰 객체 참조
        mInfoArray = new ArrayList<ListDto>();

        doWhileCursorToArray();
        // mAdapter.setArrayList(mInfoArray);
        // mAdapter.notifyDataSetChanged();

        for(ListDto i : mInfoArray) {
            DLog.d(TAG, "mid = " + i.mid);
            DLog.d(TAG, "mname = " + i.mname);
            DLog.d(TAG, "memail = " + i.memail);
            DLog.d(TAG, "mphone = " + i.mphone);
            DLog.d(TAG, "mcname = " + i.mcname);
            DLog.d(TAG, "mcaddr = " + i.mcaddr);
            DLog.d(TAG, "mcposition = " + i.mcposition);
            DLog.d(TAG, "mcurl = " + i.mcurl);
            DLog.d(TAG, "mncimg = " + i.mncimg);
        }

        mAdapter = new ListAdapter(this, mInfoArray);
        mListView.setAdapter(mAdapter);
        mListView.setOnItemClickListener(ClickListener);
    }

    @Override
    protected void onDestroy() {
        mDbOpenHelper.close();
        super.onDestroy();
    }

    private OnItemClickListener ClickListener = new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            DLog.e(TAG, "position = " + position);

            Intent d_listview = new Intent(getApplicationContext(), MapActivity.class);
            startActivity(d_listview);

            return;
        }

    };

    private void doWhileCursorToArray() {

        Cursor cursor = mDbOpenHelper.selectMate();
        DLog.e(TAG, "COUNT = " + cursor.getCount());

        while (cursor.moveToNext()) {

            ListDto listDto = new ListDto(
                    cursor.getInt(cursor.getColumnIndex("mid")),
                    cursor.getString(cursor.getColumnIndex("mname")),
                    cursor.getString(cursor.getColumnIndex("memail")),
                    cursor.getString(cursor.getColumnIndex("mphone")),
                    cursor.getString(cursor.getColumnIndex("mcname")),
                    cursor.getString(cursor.getColumnIndex("mcaddr")),
                    cursor.getString(cursor.getColumnIndex("mcposition")),
                    cursor.getString(cursor.getColumnIndex("mcurl")),
                    cursor.getString(cursor.getColumnIndex("mncimg"))
            );

            mInfoArray.add(listDto);
        }
        cursor.close();
    }
    private ListView mListView;

    private void setLayout() {
        mListView = (ListView) findViewById(R.id.listView1);
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement

        if (id == R.id.NFC) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
  

}

db에 저장된 데이터를 리스뷰로 보여주는 소스 인데요 ~ 리스트를 클릭하면

이렇게 불러온후 리스트를 클릭하면 클릭한 데이터가 넘어가서 

CAll,SMS,EMAIL,WEB버튼에 데이터베이스에있는값을 연결해 주고 싶습니다.

public void mOnClick(View v){
    Intent i;
    Uri uri;

    switch ( v.getId() ) {

        case  R.id.btn_dial:


            uri = Uri.parse("tel:01026368628");
            i = new Intent(Intent.ACTION_DIAL, uri);

            startActivity(i);

            break;

        case R.id.btn_sms:

            uri=Uri.parse("smsto:01080791630");
            i= new Intent(Intent.ACTION_SENDTO,uri);
            i.putExtra("sms_body", "");
            startActivity(i);

            break;

        case R.id.btn_webpage:

            uri=Uri.parse("http://anseong.kopo.ac.kr/");
            i = new Intent(Intent.ACTION_VIEW, uri);
            startActivity(i);

            break;

        case R.id.btn_email:

            uri=Uri.parse("mailto:joayo1105@naver.com");
            i= new Intent(Intent.ACTION_SENDTO, uri);
            startActivity(i);

            break;
    }
}

현재는 이렇게 임의의 값을 넣어줬는데 저기 임의의 값에 클릭한 데이터를 가져와야하는데 어떻게 해야하는지ㅜㅜ 궁금합니다..!!!!!

ssoo8628 (120 포인트) 님이 2015년 9월 7일 질문

2개의 답변

0 추천
mInfoArray.get(position) 로 직렬화된 객체라면 intent에 담아 넘겨서 다음 액티비티에서 사용하던지

아니면 각각의 값을 인텐트에담아 사용하던지

방법은 많은것 같네요~

인텐트에 값 담는법을 찾아보세요~
chemkaaa (6,030 포인트) 님이 2015년 9월 8일 답변
0 추천
리스트->사람선택->새 액티비티로 버튼4개 출력.

인 경우라면 intent로 화면 전환을 하는거니

1.리스트를 선택했을 때 선택한 사람이름,정보 등으로 db를 조회하세요.

2.조회해서 나온 값[전화번호,메일등] 을 새 액티비티로 넘기세요.

3.넘겨받은 값들을 이용해 버튼에 적용.
익명사용자 님이 2015년 9월 8일 답변
...