2013-01-20 3 views
0

두 번째를 ListViewItem에 추가하려고합니다. on click 이미 View (ImageView)를 만들었고 Click on을 설정했습니다. 함수가 호출됩니다. 하지만이 ListViewItem의 정보는 어떻게 얻을 수 있습니까? ListView에서 Position을 얻는 것으로 충분할까요? 두 번째 onclick을 Listview에 추가하십시오.

이미지 뷰 :

<ImageView 
    android:id="@+id/imageView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="right|center_vertical" 
    android:layout_marginLeft="10dp" 
    android:layout_marginRight="10dp" 
    android:onClick="favorite" 
    android:src="@drawable/star" /> 

내 클릭에 함수의 코드 :

public void favorite(View view){ 
    ImageView iView = (ImageView) view; 
    iView.setImageResource(R.drawable.star_checked); 

    ViewParent v = iView.getParent(); 
} 

답변

0

를 사용하여 익명의 내부 클래스 :

ImageView iView = (ImageView) findViewById(R.id.imageView1); 
    iView.setOnClickListener(new OnClickListener(){ 
      public void onClick(View v) { 
       //Your code 
      } 
     }); 

myListView.setOnItemClickListener(new OnItemClickListener() {  ![enter image description here][2] 

       @Override 
       public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

        String value = myListView.getAdapter().getItem(position).toString(); // String value of the clicked item 
        //Code 

        } 
        }); 

당신이 더 큰 응용 프로그램을 만들려면 구성 요소 이름을 더 잘 지정해야한다고 생각하면 'imageView1'은별로 편리하지 않습니다. 'imageview_main'또는 'imageview_customerdetails'와 같은 구성 요소의 이름을 지정하십시오.

+0

나는 onClickListener를 가지고 있습니다. 하지만 지금은 ListViewItem onClick이 무엇인지 알아야합니다. 하지만 어떻게 ListViewItem의 위치를 ​​얻을 수 있습니까? – Styler2go

+0

그냥이 게시물을 읽고 http://stackoverflow.com/questions/5934552/how-to-get-position-of-clicked-item-in-onclicklistener-of-listview, 이제 정수 'position'을 사용할 수 있습니다. – ObAt

+0

I 내가 너 무슨 뜻인지 놓친 것 같아. 나는 ListView 있습니다. 모든 항목에는 onItemClick 이벤트가 하나 있습니다. 그러나 모든 ListViewItem에는 하나의 ImageView가 있습니다. 이 ImageView shoudl에는 다른 OnItemClick이 있습니다. 그러나 : 어떻게? – Styler2go

0

서브 클래스 OnItemClickListener이 아니라 OnClickListener입니다.

편집 :

이 좋아 내가 지금 뭘 하려는지 이해 생각합니다. 그래서 같은 getView(int position, ...) 방법을 당신 ListAdapter를 서브 클래스 화해, 오버라이드 (override) 할 : 물론

private OnClickListener mImgClickListener = new OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      int position = (Integer) view.getTag(); 
      // do stuff with position knowledge! 
     } 
    }); 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    if (convertView != null) { 
     v = convertView; 
    } else { 
     v = newView(int position); 
    } 
    v.findViewById(R.id.imageView1).setTag(position); 
    return v; 
} 

private View newView(int position) { 
    View v; 
    // inflate your view here 
    View imageView = v.findViewById(R.id.imageView1); 
    imageView.setOnClickListener(mImgClickListener); 
    return v; 
} 

, 더 나은이 findViewById 비싼 호출을 제거하기 위해의 getView 방법에 ViewHolder 패턴을 구현하는 것입니다.

저는 View 계층 구조가 전체 목록 항목이 아닌 ImageView에서의 클릭에 우선 순위를 부여한다고 생각하지만 잘못된 것일 수 있습니다.

관련 문제