안드로이드 ListView에서 아이템 클릭시 원하는 콜럼의 값만 조회하는 법이 궁금합니다
조회수 4560회
현재 코드 내에서 어댑터를 이용하여 4개의 콜럼을 가진 리스트뷰를 사용하고 있습니다. 여기에서 아이템을 클릭했을 때 클릭된 아이템의 일부 콜럼만 조회하고픈데 어떤 방법이 있을까요??
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.city_list);
db = new DBHelper(this);
list = (ListView)findViewById(R.id.city_list);
db.getListContents();
final ArrayList<InfoClass> weatherList = new ArrayList<InfoClass>();
Cursor data = db.getListContents();
if(data.getCount() == 0){
Toast.makeText(this, "There are no contents in this list!",Toast.LENGTH_LONG).show();
}else{
while(data.moveToNext()){
InfoClass newInfo = new InfoClass(data.getString(1), data.getString(2), data.getString(3), data.getString(4));
weatherList.add(newInfo);
DBAdapter dbAdapter = new DBAdapter(this, weatherList);
list.setAdapter(dbAdapter);
}
}
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
/* TextView item_latitude = (TextView)findViewById(R.id.item_latitude);
TextView item_longitude = (TextView)findViewById(R.id.item_longitude);
data_longitude = item_latitude.getText().toString();
data_latitude = item_longitude.getText().toString();*/
Intent intent = new Intent(CityList.this, MainActivity.class);
intent.putExtra("data_latitude", data_latitude);
intent.putExtra("data_longitude", data_longitude);
setResult(Activity.RESULT_OK, intent);
finish();
}
});
}
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
제일 먼저 ListView의 아이템 하나가 클릭되는 것을 감지하는 리스너
(OnItemClickListener)
를 등록해주어야 합니다.리스너는 익명 클래스로 만드는 방법도 있고 하나의 객체로 만들어서 등록하는 방법이 있습니다.
익명 클래스로 구현 한다면 아래와 같이 할 수 있습니다.
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // position이 클릭된 위치입니다. // 컬렉션에서 적절하게 꺼내서 사용하시면 됩니다. Toast.makeText(getApplicationContext(), itemList.get(position).getSomethingColumn(), Toast.LENGTH_LONG).show(); // 추가된 부분 InfoClass selectedInfoClass = weatherList.get(position); selectedInfoClass.getXXX(); } });
- 감사합니다! 알 수 없는 사용자 2018.4.16 16:01
- 혹시 저 itemList가 의미하는 것이 무엇인지도 함께 설명해주실 수 있으신가요???? 알 수 없는 사용자 2018.4.16 16:03
- itemList 는 임시로 쓴건데 리스트뷰에서 보여주고 있는 데이터입니다~ 아이템들이죠 김선우 2018.4.16 16:27
- 죄송합니다만 제가 이해를 잘 못해서.... 질문에 코드를 첨부하여 다시 질문드립니다 알 수 없는 사용자 2018.4.16 16:41
- 코드는 4개의 콜럼을 가진 데이터베이스를 연결하여 리스트뷰에 뿌리는 형식이며, 이로 인하여 생성되는 아이템을 클릭할 경우 3,4 콜럼을 문자열로 받아오고픕니다. 주석처리된 부분에 해당 코드를 넣고픈데 아이템을 지정하려고 해봤으나 잘 되지를 않습니다. 알 수 없는 사용자 2018.4.16 16:43
- 답변에 추가했습니다. 원하시는게 맞는지 모르겠네요 김선우 2018.4.16 17:03
- 필요한 기능대로 돌아갑니다! 감사합니다! 알 수 없는 사용자 2018.4.17 09:42
댓글 입력