2013-04-11 2 views
1

나는 listview에서 클릭하고 싶은 버튼이 있습니다. 그러나 문제는 클릭 할 때 현재 리스너 호출을 인식 할 수없는 것입니다. 사전에listview 항목에있는 버튼의 onclick 리스너를 호출하는 방법

덕분에 ... 당신은 목록 어댑터의 getView() 기능 내부의 button.setOnClickListener()을 추가해야합니다 :)

+0

후 로그 캣 – edwin

+0

과 함께 코드'의 getView() '코드가 도움이 될 것입니다. post –

답변

1

전체 목록 항목을 처리하지 않으려면 listview에 수신기를 설정하지 마십시오. 당신은 예를 아래에 주어진 같은 목록 항목의 개별 뷰에 대한 리스너를 설정할 수 있습니다

public class MyArrayAdapter extends ArrayAdapter<Map<String, String>> { 

    private Context mContext; 

    public MyArrayAdapter(Context context, int textViewResourceId, 
      List<Map<String, String>> objects) { 
     super(context, textViewResourceId, objects); 
     mContext = context; 
    } 

    public View getView(final int position, View convertView, ViewGroup parent) { 

     if (convertView == null) { 
      convertView = LayoutInflater.from(getContext()).inflate(
        R.layout.list_row, null, false); 
     } 

     final Map<String, String> data = (Map<String, String>) getItem(position); 

     ImageView imageView = (ImageView) convertView 
       .findViewById(R.id.imageView); 
     imageView.setImageResource(Integer.parseInt(data.get("image"))); 

     TextView textView = (TextView) convertView 
       .findViewById(R.id.textViewTitle); 
     textView.setText(data.get("name")); 

     Button button = (Button) convertView 
       .findViewById(R.id.buttonShow); 

     button.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       mContext.startActivity(new Intent(mContext, 
          DetailActivity.class).putExtra(EXTRA_IMAGE_URL, 
          data.get("url"))); 
      } 
     }); 

     return convertView; 
    } 

} 
0

, 목록보기 또는 버튼이다.

+0

나는 그것을 시도했지만 문제는 StartActivity가 getview() 함수에서 인식되지 않는다는 것이다. –

+1

@SajadBinNazir는 컨텍스트를 사용자 정의 어댑터에 전달하고 해당 컨텍스트를 사용하여 startActivity를 호출한다. –

+1

'startActivity()'는 컴파일되지 않지만'YourActivity .this.startActivity()'또는'mContext.startActivity()'(@ Homam의 응답을 사용하는 경우) 제대로 작동합니다. –

관련 문제