안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요.
현재 ListView 에서 항목을 클릭하면 대화상자로 정보를 표시하는 액티비티를 구성중입니다.
헌데 ListView 에서 OnItemClickListener 가 전혀 먹히질 않네요... ㅠ ㅠ
xml 에서 clickable 을 true 로 놓고 focusable 도 true 로 해보고
리스너 등록 방법도 여러가지로 해보았는데 전혀 먹히는게 없습니다.
이와 유사한 방식으로 돌아가는 액티비티는 문제 없이 돌아가는데 환장하겠네요.
관련 질문/답변도 안보이는 듯 하고... 혼자 풀어볼려다 답이 안보여서 결국엔 질문드립니다 ㅠ ㅠ
현재 레이아웃을 RelativeLayout 으로 구성하고 내부에 3개의 TextView 와 1개의 ListView 가 들어있습니다.
(혹시나 해서 LinearLayout 으로 바꿔봤지만 동일...)
소스는 아래와 같습니다.
GetResult 는 웹에서 정보를 받아오기 위한 클래스로 별도로 작성되어있습니다.
소스가 좀 지저분해도 이해를... ㅠ ㅠ
소스는 다른사람이 보는게 제일 정확하다고... 제 눈에는 당췌 뭐가 문제인지 보이질 않네요 ㅠ ㅠ
잘못된 부분 있으면 지적 부탁드립니다. ㅠ ㅠ
현재 ListView 에서 항목을 클릭하면 대화상자로 정보를 표시하는 액티비티를 구성중입니다.
헌데 ListView 에서 OnItemClickListener 가 전혀 먹히질 않네요... ㅠ ㅠ
xml 에서 clickable 을 true 로 놓고 focusable 도 true 로 해보고
리스너 등록 방법도 여러가지로 해보았는데 전혀 먹히는게 없습니다.
이와 유사한 방식으로 돌아가는 액티비티는 문제 없이 돌아가는데 환장하겠네요.
관련 질문/답변도 안보이는 듯 하고... 혼자 풀어볼려다 답이 안보여서 결국엔 질문드립니다 ㅠ ㅠ
현재 레이아웃을 RelativeLayout 으로 구성하고 내부에 3개의 TextView 와 1개의 ListView 가 들어있습니다.
(혹시나 해서 LinearLayout 으로 바꿔봤지만 동일...)
<?xml version="1.0" encoding="utf-8"?> <!-- 결과 목록 --> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#ffffff" > <TextView android:id="@+id/result_title" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="검색결과" android:textColor="#000000" android:textSize="12pt" android:paddingLeft="8px" android:paddingTop="10px" /> <TextView android:id="@+id/result_count" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#ffffff" android:text="result_count" android:textColor="#000000" android:textSize="8pt" android:paddingLeft="8px" android:paddingBottom="4px" android:layout_below="@id/result_title" /> <TextView android:id="@+id/result_page" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="page num" android:textColor="#000000" android:textSize="8pt" android:gravity="center" android:layout_alignParentBottom="true" android:layout_margin="8px" /> <ListView android:id="@+id/result_list" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginLeft="8px" android:layout_marginRight="8px" android:fadingEdge="none" android:smoothScrollbar="true" android:fadeScrollbars="true" android:headerDividersEnabled="true" android:footerDividersEnabled="true" android:layout_below="@id/result_count" android:layout_above="@id/result_page" android:focusable="true" android:clickable="true" /> </RelativeLayout>
소스는 아래와 같습니다.
import java.io.ByteArrayOutputStream; import java.util.ArrayList;
import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.AdapterView; import android.widget.ListView; import android.widget.Toast; import android.widget.AdapterView.OnItemClickListener;
public class Result extends Activity { /** Called when the activity is first created. */ ArrayList<ResultList> RL; ListView v_result; ByteArrayOutputStream stream = new ByteArrayOutputStream(); String[][] value = {{null, null}, {null, null}}; int[] setContent = {0,0,0}; int page = 1; String rt1 = null, rt2 = null; String TAG = "Test Log"; GetResult gr; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.result); Intent intent = getIntent(); getValue(intent); RL = new ArrayList<ResultList>(); gr = new GetResult(); gr.SetPost(); gr.getPage(value, page); rt1 = gr.getResult(); rt2 = gr.clean(rt1); stream = gr.parse(rt2); RL = gr.getList(stream); if(RL.isEmpty()){ AlertDialog.Builder ad = new AlertDialog.Builder(Result.this); ad.setTitle("알림").setMessage("검색된 결과가 없습니다.").setPositiveButton("닫기", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { finish(); } }).show(); }else{ ResultAdapter rAdapter = new ResultAdapter(this, R.layout.result_sub, RL); v_result = (ListView)findViewById(R.id.result_list); v_result.setAdapter(rAdapter); Log.v(TAG, "setAdapter finish"); v_result.setOnItemClickListener(new OnItemClickListener(){ public void onItemClick(AdapterView<?> parent, View view, int position, long id){ Log.v(TAG, "in OnItemClickListener"); String detail=""; gr.SetDetail(); gr.getDetail(RL.get(position).cid); rt1 = gr.getResult(); rt2 = gr.clean(rt1); stream = gr.parse(rt2); detail = gr.extDetail(stream); AlertDialog.Builder ad = new AlertDialog.Builder(Result.this); ad.setTitle(RL.get(position).title).setMessage(detail).show(); } }); } } }
GetResult 는 웹에서 정보를 받아오기 위한 클래스로 별도로 작성되어있습니다.
소스가 좀 지저분해도 이해를... ㅠ ㅠ
소스는 다른사람이 보는게 제일 정확하다고... 제 눈에는 당췌 뭐가 문제인지 보이질 않네요 ㅠ ㅠ
잘못된 부분 있으면 지적 부탁드립니다. ㅠ ㅠ
2010.09.03 15:42:22
xml에서
android:headerDividersEnabled
=
"true"
android:footerDividersEnabled
=
"true"
이 부분을 왜 넣어주신거죠?
Header랑 footer를 안쓰고 계시는거 같은데.. 이 부분은 빠져도 될듯합니다.
그거 말고는 딱히 틀린부분이 없는듯 보이는데;;
Log.v(TAG,
"in OnItemClickListener"
);
이 부분은 정상 작동하나요??
47 라인을 끝으로 괄호가 닫히는줄 알았는데..
밑에 더 있네요;;
일단 setOnItemClickListener의 어느부분이 안불러진다는지 정확하게 표시 안해주셔서 헷갈렸네요..
Log.v(TAG,
"in OnItemClickListener"
);
이 부분이 찍힌다면 Listener은 불러지고 함수가 잘못된거 아닌가 싶네요.
2010.09.03 16:43:45
44 - 57까지가 한 블럭이지요.
이 블럭 전체가 동작을 안하네요.
항목 클릭시 아무 반응이 없습니다. ㅠ ㅠ 물론 로그도 실행이 안됩니다 ㅠ ㅠ
말 그대로 리스너 부분 전체가 아무런 동작을 안합니다 ㅠ ㅠ
답답해서 머리 붙잡고 글을 올리다 보니 내용 전달이 제대로 안된듯 하네요 ㅠ ㅠ
계속 만져보고 있는데 답이 나올 기미가 안보입니다 ㅠ ㅠ
이 블럭 전체가 동작을 안하네요.
항목 클릭시 아무 반응이 없습니다. ㅠ ㅠ 물론 로그도 실행이 안됩니다 ㅠ ㅠ
말 그대로 리스너 부분 전체가 아무런 동작을 안합니다 ㅠ ㅠ
답답해서 머리 붙잡고 글을 올리다 보니 내용 전달이 제대로 안된듯 하네요 ㅠ ㅠ
계속 만져보고 있는데 답이 나올 기미가 안보입니다 ㅠ ㅠ
v_result = (ListView)findViewById(R.id.result_list);
결과로 v_result를 제대로 가져오는지부터 확인 하셔야 할듯합니다.