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

ListView / SQLite 관련 질문

0 추천

  

이제는 해야할 때 (710 포인트) 님이 2014년 7월 8일 질문

2개의 답변

+1 추천
MainActivity에서 DB를 불러오겠죠? 그럼 리스트의 Adapter에 해당 리스트들이 바인딩되서 담겨져있을텐데

onItemClick을하였을때 list.getItem(position);을 해주시면 리스트에 넣은 몇번째의 값이 나옵니다.. 그값들을

다음액티비티로 보낼건데...

Intent intent = new Intent(this, Activity_01.class);

intent.putExtra("name", "값"); 이런식으로보낸다음에(객체로 만들어서 보낼경우 객체직렬화를 해주셔야되구요..)

Activity_01.class의 onCreate에서

String name = getIntent().getStringExtra("name");

이런식으로 값을 주고받을수있습니다
whdrb19 (23,520 포인트) 님이 2014년 7월 8일 답변
네 거기 까지 구현했습니다.
포지션값말구 String으로 구현했습니다
혹시 Main에서 아이템 클릭했을때 activity_01 로 전환될때 db구현하는 법은 없나요?? 없으면 그냥 클랙스 몇십개 몇백개 만들어서 따로 만들어야하나요???ㅠ
activity_01 로 전환될때 db구현하는법이라는게 정확히 무슨소린지 모르겠습니다;; 왜그래야되는지 이유를 설명해주시면 이해가될거같아요...
설명을 잘못하겠네요...음 그니깐 제가 원하는것은 MainActivity 에서는 제목만 있으니깐 양이 많아봤자 한줄짜리라 그냥 쓰면될거같은데
Activiti_01 에서는 내용,설명 이라 글이 길어요 그래서 그쪽에서 DB구현하는게 좋을거같은데 어찌 해야될지 모르겠습니다....음..설명이되셨으려나..
Model.class
public class Model implements Serializable {

    private String title;
    private String description;
    private String regdate;
    
    public Model(String title, String description, String regdate) {
        this.title = title;
        this.description = description;
        this.regdate = regdate;
    }

    /* (non-Javadoc)
     * @see java.lang.Object#toString()
     */
    @Override
    public String toString() {
        return "Model\n[title=" + title + ", \ndescription=" + description + ", \nregdate=" + regdate + "]";
    }
}




MainActivity.class
public class MainActivity extends Activity{

    private ArrayList<Model> mModelList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        //DB에서 리스트 빼왔다치고..
        mModelList = new ArrayList<Model>();
        mModelList.add(new Model("제목1", "설명1", "2014-07-07"));
        mModelList.add(new Model("제목2", "설명2", "2014-07-08"));
        mModelList.add(new Model("제목3", "설명3", "2014-07-09"));
        mModelList.add(new Model("제목4", "설명4", "2014-07-10"));
        mModelList.add(new Model("제목5", "설명5", "2014-07-11"));
        
        ListView listview = new ListView(getApplicationContext());
        ArrayAdapter<Model> adapter = new ArrayAdapter<Model>(this, android.R.layout.simple_list_item_1, mModelList);
        listview.setAdapter(adapter);
        listview.setOnItemClickListener(new AdapterView.OnItemClickListener(){
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                // TODO Auto-generated method stub
                Model model = mModelList.get(position);
                Intent intent = new Intent();
                intent.setClass(getApplicationContext(), Activity_01.class);
                intent.putExtra("model", model);
                startActivity(intent);
            }
        });
        setContentView(listview);
    }

}








Activity_01.class
public class Activity_01 extends Activity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        Model model = (Model) getIntent().getSerializableExtra("model");
        TextView textview = new TextView(getApplicationContext());
        setContentView(textview);
        textview.setText("model = " + model.toString());
    }
    
}
 





이런식으로 원하시는거아닌가요?
0 추천
방법은 하기나름이죠.

 

1.MainActivity에서 리스트클릭했을때 Activity_01로 넘어갈때 정보를 넘겨줘도되구요.

 ->액티비티간에 자료 전달하는방법을 찾아보세요. putExtra getExtra

 

2. MainActivity에서 DB를 설정했듯이 Activity_01에서도 DB를 설정하시면됩니다.

  마찬가지로 MainActivity에서 몇번째 row를 클릭했는지 position값만 넘겨주면되구요.

 그걸로 다시 Activity_01에서 DB검색을 하면 되겠죠.

 

3. 귀찮으면 static변수를 써서 MainActivty에 static 정보를 담아서 Activity_01에서 엑세스만해도되고요.
기초개발자 (24,060 포인트) 님이 2014년 7월 8일 답변
...