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

listView에서 sqlite값 불러오는 방법 질문요 !

0 추천

현재 배열 값을 만들어서 리스트뷰에 뿌려주는 것을 만들 수 있고 따로 sqlite로 만들 수는 있는데

sqilte값을 불러와서 listView에 뿌려주는 방법을 잘 모르겠어서요.

 

생각해보면 배열 값 대신 sqlite값을 넣어서 adapter에 해당값 적용시켜주면 sqlite값을 listView에 뿌려줄 수 있을 것 같은데

맞는 방법인지, 맞으면 어떻게 하는지 고수님들 답변 좀 부탁드려요 :)

 

아래는 배열 값으로 만든 리스트 뷰 및 sqlite 코드입니다.

 

배열 값으로 만든 리스트뷰

MainActivity.java

package com.example.zlalistviewcustomizing;
 
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;
 
public class MainActivity extends Activity {
 
    ListView listView;
     
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
         
        ArrayList<MyCustomDTO> list = new ArrayList<MyCustomDTO>();
        list.add(new MyCustomDTO(R.drawable.canada, "canada", "canada good"));
        list.add(new MyCustomDTO(R.drawable.france, "france", "france good"));
        list.add(new MyCustomDTO(R.drawable.korea, "korea", "korea very good"));
        list.add(new MyCustomDTO(R.drawable.mexico, "mexico", "mexico good"));
        list.add(new MyCustomDTO(R.drawable.poland, "poland", "poland good"));
         
        listView = (ListView)findViewById(R.id.listView1);
         
        MyCustomAdapter adapter = new MyCustomAdapter(
                                                getApplicationContext(),
                                                R.layout.list_row,
                                                list);
         
        listView.setAdapter(adapter);
    }
}

 

MyCustomAdapter.java

package com.example.zlalistviewcustomizing;
 
import java.util.ArrayList;
 
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
 
public class MyCustomAdapter extends BaseAdapter {
     
    Context ctx;
    int layout;
    ArrayList<MyCustomDTO> list;
    LayoutInflater inf;
     
    public MyCustomAdapter(Context ctx, int layout, ArrayList<MyCustomDTO> list) {
         
        this.ctx = ctx;
        this.layout = layout;
        this.list = list;
         
        inf = (LayoutInflater)ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
     
    //ListView에서 보여줄 데이터의 개수 지정
    @Override
    public int getCount() {
        return list.size();
    }
     
    //ListView에서 보여줄 객체 지정. getCount()값에 의해서 position 값이 동적으로 변경
    //ex. getCount() 값이 3이면 position 값은 0, 1, 2로 설정되어 getItem 메소드가 3번 수행됨
    @Override
    public Object getItem(int position) {
        return list.get(position);
    }
 
    //getItem(position) 메소드가 리턴한 객체의 고유 식별값
    //일반적으로 position 값도 고유값이기 때문에 position으로 지정
    @Override
    public long getItemId(int position) {
        return position;
    }
     
    //실제 행(row)을 보여주는 뷰를 생성하는 메소드
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
         
        //inflate 메소드를 사용하여 list_row.xml을 View 객체로 변경
        if(convertView == null) {
            convertView = inf.inflate(layout, null);
        }
         
        //converView 변수를 이용해서 list_row.xml에 지정한 위젯 참조
        ImageView imgIcon = (ImageView)convertView.findViewById(R.id.imgIcon);
        TextView txtTitle = (TextView)convertView.findViewById(R.id.txtTitle);
        TextView txtContent = (TextView)convertView.findViewById(R.id.txtContent);
 
        MyCustomDTO dto = list.get(position);
         
        imgIcon.setImageResource(dto.getImgIcon());
        txtTitle.setText(dto.getTitle());
        txtContent.setText(dto.getContent());
         
        return convertView;    
    }
}

 

sqlite 코드(위와 다른 파일)

MainActivity.java

package com.example.zla;
 
import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.widget.CursorAdapter;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
 
public class MainActivity extends Activity {
 
    ListView listView;
     
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
     
        listView = (ListView)findViewById(R.id.listView1);
         
        //1. 데이터베이스 open
        MySQLiteHandler handler = MySQLiteHandler.open(getApplicationContext());
         
        //2. data insert
        handler.insert("홍길동", 20, "서울");
        handler.insert("이순신", 45, "전라");
         
        //3. data update
        handler.update("홍길동", 10);
         
        //4. data delete
        handler.delete("이순신");
         
        //5. data select
        Cursor c = handler.select();
         
        //Cursor 객체 관리
        //startManagingCursor(c);
         
        SimpleCursorAdapter adapter = new SimpleCursorAdapter(
                                        getApplicationContext(),
                                        android.R.layout.simple_list_item_2,
                                        c,
                                        new String[]{"name", "address"},
                                        new int[]{android.R.id.text1,
                                                  android.R.id.text2},
                                        CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
         
        listView.setAdapter(adapter);
         
        //6. 데이터베이스 close
        handler.close();
         
    }
}

 

뿌요뿌요 (1,350 포인트) 님이 2015년 1월 29일 질문
뿌요뿌요님이 2015년 1월 29일 수정

1개의 답변

0 추천
 
채택된 답변
쎄미 (162,410 포인트) 님이 2015년 1월 30일 답변
뿌요뿌요님이 2015년 2월 3일 채택됨
감사합니다 . ! 잘 해결했어요 ㅎㅎ
...