2010-08-17 10 views
0

List라는 List와 함께 list라는 XML로 ListActivity를 여는 중입니다. 나는 어레이 어댑터를 설정하고 다른 활동 (목록 활동은 아니지만 단지 정상적인 활동)에서 작동하며 모든 것이 잘 작동한다. 그래도이 목록 활동을 열려고하면 ID android.R.id.list가있는 ListView가 필요하다는 오류가 발생합니다. 그래도 그 ListView있다. 내 문제는 무엇입니까?ListActivity 오류

내 AlertDialog 코드입니다. 작동하고 싶습니다.

공공 무효 onListItemClick (ListView에 부모,보기 V, INT 위치, 긴 ID)

{ 
     Context mContext = getApplicationContext(); 
     Dialog dialog = new Dialog(mContext); 

     dialog.setContentView(R.layout.custom_dialog); 
     dialog.setTitle(getText(position)); 

     ImageView image = (ImageView) alertDialog.findViewById(R.id.image); 
     image.setImageResource(R.drawable.hydrogen); 




     } 

이 내가 얻으려고 노력했던 다른 코드이었다 그것은

 public void onListItemClick(ListView parent, View v, int position, 
       long id) { 
      new AlertDialog.Builder(Anions.this); 
       alertDialog.setContentView(R.layout.custom_dialog); 
       alertDialog.setTitle(anions[position]); 
      ImageView image = (ImageView) alertDialog.findViewById(R.id.image); 
      image.setImageResource(R.drawable.hydrogen); 
      alertDialog.setButton("Done", new DialogInterface.OnClickListener(){ 
       public void onClick(DialogInterface dialog, int which){ 
        return; 
       } 
      } 

      ); 
      alertDialog.show(); 


     } 
+0

다른 질문을하기 위해 계속 수정해서는 안됩니다. 귀하의 질문에 답이 나온 경우, 받아 들인 대답을 선택한 다음 다른 질문이 있으면 다른 질문을하십시오. 계속 수정하면 곧 답변과 질문 사이에 연결이 끊어집니다. – codinguser

답변

0

확인. 그래서 마침내 나는 얼마나 많은 사이트를 아는 지 경험 한 후에 필요한 것을 발견했습니다. 어쨌든 여기에 마침내이 같은 문제에 부딪히는 다른 사람들을 위해 일한 코드가 있습니다.

공개 무효 onListItemClick (ListView를 모체 뷰 V, INT 위치 긴 ID) {

경우 ("아세트산".equals (음이온 [위치]))

{대화 대화 = 새로운 대화 상자 (this);
dialog.setContentView (R.layout.custom_dialog); dialog.setTitle ("Acetate");
dialog.setCancelable (true);

ImageView img = (ImageView) dialog.findViewById (R.id.ImageView01); img.setImageResource (R.drawable.element_el);

대화 상자.보여 주다();

은}

내 마지막 코드는 아마이 다를하지만이 작동합니다. 이에 대한 자세한 내용은 http://www.androidear.com/developers/how-to-display-a-custom-dialog-in-your-android-application/comment-page-1/#comment-1570

2

귀하의 목록을 작동하려면 보기에는 Android가 자동으로 바인딩 할 수 있도록 android:id="@android:id/list"으로 선언 된 ID가 있어야합니다.

<ListView android:id="@android:id/list" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent"/> 

새로운 ID를 정의하지 않고 Android가 알고있는 ID를 사용한다는 점에 유의하십시오. 이렇게하면 레이아웃 파일에 여러 가지 레이아웃 요소를 가질 수 있지만 안드로이드는 목록 요소를 포함 할 레이아웃 요소를 찾을 수 있습니다.

이것은 documentation for ListActivity에서 인용 한 것입니다.

ListActivity에는 화면의 중앙에 전체 화면으로 구성된 단일 목록으로 구성된 기본 레이아웃이 있습니다. 그러나 원하는 경우 onCreate()에서 setContentView()를 사용하여 자체 레이아웃을 설정하여 화면 레이아웃을 사용자 정의 할 수 있습니다. 이렇게하려면 자신의보기에는 "@android : id/list"id (또는 코드에있는 경우 목록)가 포함 된 ListView 객체가 있어야합니다.

동일한 파일에서 텍스트보기를 사용하는 경우에도 마찬가지입니다 (ID가 'empty'인 경우) ListView가 비어있는 경우 Android가 표시합니다. 예 :

<TextView android:id="@android:id/empty" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content"    
       android:text="No data"/> 
+0

확인. 나는 거기에 정보를 얻기 위해 일부 질문을 편집했다. –

+0

XML이 잘못되었습니다. 자신의 R 클래스 내에 'list'라는 새로운 id 속성을 정의하려고합니다. android.R 클래스의 것을 사용하십시오. 다시 게시 한 XML을보고이 ID를 어떻게 정의했는지 확인하십시오. android : id = "@ + id/list"가 아닌 android : id = "@ android : id/list"를 사용하십시오. – codinguser

+0

좋습니다. 나는 최종적으로 보여줄 나의 listview를 얻었고 그것이 잘 작동하고있다. 이제 내 문제는 선택을 클릭하면 AlertDialog를 열고 싶지만 오류가 계속 발생한다는 것입니다. 사용자 정의 대화 상자를 사용하고 있는데 몇 가지 방법으로 설정하려고했습니다. 위의 최신 시도가 있습니다. –