안드로이드 개발 질문/답변
(글 수 45,052)
public interface OnDataSelectionListener {
/**
* Method that is called when an item is selected in DataListView
*
* @param parent Parent View
* @param v Target View
* @param id ID for the View
*/
public void onDataSelected(AdapterView parent, View v, int position, long id);
}
* Method that is called when an item is selected in DataListView
*
* @param parent Parent View
* @param v Target View
* @param id ID for the View
*/
public void onDataSelected(AdapterView parent, View v, int position, long id);
}
public class DataListView extends ListView {
private IconTextListAdapter adapter;
private OnDataSelectionListener selectionListener;
public DataListView(Context context) {
super(context);
init();
}
}
public DataListView(Context context, AttributeSet attrs) {
super(context, attrs);
super(context, attrs);
init();
}
private void init() {
setOnItemClickListener(new OnItemClickAdapter());
}
}
private void init() {
setOnItemClickListener(new OnItemClickAdapter());
}
public void setAdapter(BaseAdapter adapter) {
super.setAdapter(adapter);
}
public void addFooterView (View v) {
super.addFooterView(v);
}
public void addFooterView (View v) {
super.addFooterView(v);
}
public BaseAdapter getAdapter() {
return (BaseAdapter)super.getAdapter();
}
public void setOnDataSelectionListener(OnDataSelectionListener listener) {
this.selectionListener = listener;
}
public OnDataSelectionListener getOnDataSelectionListener() {
return selectionListener;
}
class OnItemClickAdapter implements OnItemClickListener {
public OnItemClickAdapter() {
}
public void onItemClick(AdapterView parent, View v, int position, long id) {
if (selectionListener == null) {
return;
}
selectionListener.onDataSelected(parent, v, position, id);
}
}
}
if (selectionListener == null) {
return;
}
selectionListener.onDataSelected(parent, v, position, id);
}
}
}
위와같이 정의해서 사용하고 있습니다.
이곳 선달님의 강좌에서 NavigationGroupActivity를 사용해서 만들고 있는데
안드로이드 2.2버전에서는 잘 되는데 4.0버전에서는 뒤로가기 버튼 눌렀다가 다시 누르면 먹통입니다..
디버그를 해봐도 뒤로가기 누른 후 손으로 마구마구 터치를 해도 리스너 자체가 동작을 안하는거 같습니다.
희안하게 스크롤링은 됩니다. ㅡㅡ^ 밑으로 쭉 스크롤링하고 누르면 되는경우도 있습니다.
어찌 설명을 해야할지 몰라서 일단 이렇게 질문 드려봅니다..
NavigationGroupActivity 뒤로가기 관련 스크립트는 아래와 같습니다
public void back() { // Back Key가 눌러진 경우의 처리
if ( history.size() > 1 ) {
history.remove( history.size() - 1 );
setContentView( history.get(history.size() - 1));
}
else {
finish(); // 최상위 Level의 경우 TabActvity을 종료해야한다.
}
}
if ( history.size() > 1 ) {
history.remove( history.size() - 1 );
setContentView( history.get(history.size() - 1));
}
else {
finish(); // 최상위 Level의 경우 TabActvity을 종료해야한다.
}
}
아래는 리스너 부분 소스코드입니다.
list.setAdapter(adapter);
list.setOnDataSelectionListener(new OnDataSelectionListener() {
public void onDataSelected(AdapterView parent, View v, int position, long id) {
IconTextItem curItem = (IconTextItem) adapter.getItem(position);
String[] curData = curItem.getData();
Toast.makeText(getApplicationContext(), "Selected : " + curData[0], 2000).show();
Intent intent = new Intent(DeptViewActivity.this, ListViewActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.putExtra("plcd", curData[1]);
goNextHistory("ListViewActivity",intent);
}
});