CursorAdapter를 이용한 listview에서 setOnItemClickListener로 클릭한 데이터의 정보 불러오기

조회수 2022회

db를 만들었고 cursorAdapter를 이용해서 listview에 뿌려줬습니다. 여기에서 listview에서 항목을 클릭하면, 해당 db의 정보를 보여주게 하고 싶습니다. 겉부분은 만들었는데 안쪽의 코드를 어떻게 작성해야 할지 모르겠습니다. 해당 row의 포지션 값을 가지고 와서 하면 된다? 뭐 이런 내용은 봤는데 자세한 부분을 잘 모르겠습니다. 어떻게 해야 할까요?

이 코드는 listview가 있는 액티비티의 코드입니다.

public class DesignListActivity extends Activity {

    DatabaseOpenHelper mHelper;
    static SQLiteDatabase db;
    static Cursor cursor;
    static MyCursorAdapter myCursorAdapter;

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


        //데이터베이스에 등록된 설계도 목록을 리스트뷰로 보이게 하기
        final ListView designListView = findViewById(R.id.designListView);

        mHelper = new DatabaseOpenHelper(this, "DESIGN.db", null, 1);
        db = mHelper.getWritableDatabase();
        cursor = db.rawQuery(qureySelectAll, null);
        myCursorAdapter = new MyCursorAdapter(this, cursor);

        designListView.setAdapter(myCursorAdapter);

        designListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                Intent intent = new Intent(DesignListActivity.this, DesignInfoActivity.class);

                // 모르겠는 부분!
                //

                intent.putExtra("id", id);
                startActivityForResult(intent, 0);
            }
        });

        // 뒤로 버튼 클릭 시 이벤트(메인화면으로 돌아감)
        Button backToMain2 = findViewById(R.id.backToMain2);
        backToMain2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onBackPressed();
            }
        });
    }

아래 코드는 커서어댑터입니다.

class MyCursorAdapter extends CursorAdapter {

    @SuppressWarnings("deprcation")
    public MyCursorAdapter(Context context, Cursor c) {
        super(context, c);
    }

    @Override
    public void bindView(View view, Context context, Cursor cursor) {

        TextView designCodeList = view.findViewById(R.id.designCodeList);
        TextView metalSheetTypeList = view.findViewById(R.id.metalSheetTypeList);
        TextView hittingTimesList = view.findViewById(R.id.hittingTimesList);
        TextView moldNumberList = view.findViewById(R.id.moldNumberList);
        TextView hittingTimeList = view.findViewById(R.id.hittingTimeList);
        TextView numberList = view.findViewById(R.id.numberList);

        String numberlist = cursor.getString(0);
        String designcode = cursor.getString(1);
        String metalsheettype = cursor.getString(2);
        String hittingtimes = cursor.getString(3);
        String moldnumber = cursor.getString(30);
        String hittingtime = cursor.getString(31);

        numberList.setText(numberlist);
        designCodeList.setText(designcode);
        metalSheetTypeList.setText(metalsheettype);
        hittingTimesList.setText(hittingtime);
        moldNumberList.setText(moldnumber);
        hittingTimeList.setText(hittingtimes);
    }

    @Override
    public View newView(Context context, Cursor cursor, ViewGroup parent) {

        LayoutInflater inflater = LayoutInflater.from(context);
        View view = inflater.inflate(R.layout.design, parent, false);
        return view;
    }
}
  • (•́ ✖ •̀)
    알 수 없는 사용자

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

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

(ಠ_ಠ)
(ಠ‿ಠ)