2011-11-14 2 views
6

나는 간단한 ArrayAdapter 있습니다. 새 활동이 열리도록 내 목록을 클릭 할 때마다 청취자를 설정하고 싶습니다. 내가 어떻게 그럴 수 있니? 내 ArrayAdapter와 코드 - 당신이 사용하여 어댑터를 설정 한 후에안드로이드 - 항목을 추가하는 방법을 ArrayAdapter에 메서드를 클릭하십시오

public class CountryListAdapter extends ArrayAdapter<String> { 
private final Activity context; 
private final ArrayList<String> names; 

public CountryListAdapter(Activity context, ArrayList<String> names) { 
    super(context, R.layout.rowlayout, names); 
    this.context = context; 
    this.names = names; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    LayoutInflater inflater = context.getLayoutInflater(); 
    View rowView = inflater.inflate(R.layout.rowlayout, null, true); 
    TextView textView = (TextView) rowView.findViewById(R.id.label); 
    textView.setText(names.get(position)); 
    return rowView; 
} 

답변

8

OnItemClickListener 을 구현하면 다음 코드를 사용할 수 있습니다.

,

편집 : 당신이 ListActivity를 확장하지 않는 경우 그렇지 않으면, 레이아웃에리스트 뷰를 가지고 ListView list = findViewById(R.id.listView) 같은 뭔가 ListView list = getListView()를 교체합니다. 간단히 AdapterView.OnItemClickListener을 구현

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

      } 
     }); 
+0

ArrayAdapter (또는 다른 어댑터)에 onClick 논리를 바인딩 할 방법이 있습니까? 하나의 어댑터가 있지만 멀티플 ListViews, 그것으로 가득 차 있고, 어댑터 자체에 바인딩하는 것이 좋을까요? –

-2

: 다음

mListView.setAdapter(myCountryListAdapter); 

할 수 있습니다 설정,리스트 뷰에 대한 클릭 리스너 : 당신이 ListActivity를 사용하는 가정

mListView.setOnParentClickListener(new OnClickListener() {   
    public void onClick(View view,) { 
      ///do what you want the click to do 
    }  
    }); 
4

list.setOnItemClickListener(this)를 교체합니다.

@Override 
public void onItemClick(AdapterView<?> adapterView, View view, int pos, long l) { 
    Intent i = new Intent(this, ProductActivity.class); 
    i.putExtra("item_id", manager.getItemIdAtIndex(pos)); 
    startActivity(i); 
} 

그런 다음 해당 메소드로 클래스를 어댑터의 onItemClickListener로 설정하면됩니다.

관련 문제