버튼을 별도로 만들어서 check된 것을 찾아서 배열에 넣고 일괄 삭제하도록 구현하려고 합니다. setOnItemClickListener을 이용해서 onItemClick 메소드에 Toast를 해봐도 들어오지도 안네요. 저와 같은 문제 해결 하신분들 도움 부탁드립니다.
setOnItemClickListener에 onItemClick 메소드에 Toast를 해봐도 아무 동작을 안합니다. 클릭이벤트 자체가 먹지를 않아서 어떻게 해야 할지 모르겠습니다.
체크박스가 이벤트를 다 먹고 있는겁니다. 체크박스외의 다른 영역을 터치해도 관계없는
(다른 영역 터치해도 체크 토글) 상황이라면
체크박스의 focusable이나 clickable을 false로 놓고 하시는게 나을겁니다.
저같은 경우는 애초에 레이아웃에 checkable을 implement해서 쓰죠... 그게 편합니다.
MULTIPLE_CHOICE를 이용하는거죠....
답변 감사합니다.
List 정의 내용입니다.
-------------------------------------------------------------------
<ListView
android:id="@+id/list"
android:layout_width="300sp"
android:layout_height="fill_parent"
android:choiceMode="multipleChoice"
android:focusable="false"
android:clickable="false"
android:focusableInTouchMode="true"
android:textColor="@color/result_text"
android:background="@color/result_view"
android:layout_weight="9"
android:textSize="14sp">
</ListView>
---------------------------------------------------------------------------
이것을 처리하는 내용입니다.
..
array_list = (ListView) findViewById(R.id.list);
mAdapter = new SimpleAdapter(
CaptureActivity.this,
items,
R.layout.barcodelist,
new String[] { RowItem.ROW_CHECK, RowItem.ROW_ID, RowItem.ROW_TEXT},
new int[]{R.id.del_ck, R.id.id_text, R.id.code_text});
array_list.setAdapter(mAdapter);
array_list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
array_list.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
Toast.makeText(this, "1111", Toast.LENGTH_SHORT).show();
return false;
}
});
array_list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
Toast.makeText(this, "2222", Toast.LENGTH_SHORT).show();
}
});
array_list.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
Toast.makeText(this, "bbbb", Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
Toast.makeText(this, "cccc", Toast.LENGTH_SHORT).show();
}
});
findViewById(R.id.btn_seldel).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
try {
int j = 0;
String[] bItem = new String[array_list.getCount()];
for(int i=0; i < array_list.getCount(); i++){
if(((CheckBox)array_list.getChildAt(i).findViewById(R.id.del_ck)).isChecked()) {
Toast.makeText(CaptureActivity.this, String.valueOf(i)+ ">"+((TextView)array_list.getChildAt(i).findViewById(R.id.id_text)).getText().toString()+ "->"+((TextView)array_list.getChildAt(i).findViewById(R.id.barcode_text)).getText().toString(), Toast.LENGTH_SHORT).show();
bItem[j++] = ((TextView)array_list.getChildAt(i).findViewById(R.id.id_text)).getText().toString();
}
else {
Toast.makeText(CaptureActivity.this, String.valueOf(i), Toast.LENGTH_SHORT).show();
}
}
} catch (Exception e) {
Toast.makeText(this, e.toString(), Toast.LENGTH_SHORT).show();
}
}
});
Key 관련 이벤트는 전혀 동작하지 않고 버튼은 보여지는 리스트만 처리하기 때문에 에러가 나네요
어떻게 해야 할지 방향을 잡지 못하는 사항입니다.




인트값으로 체크시 해당 리스트의 클릭이벤트에서의 매개변수 리스트 인덱스를저장하시고 지워주시면 됩니다.