2011-11-14 10 views
6

Mam prosty ArrayAdapter. Chcę skonfigurować detektor dla każdego kliknięcia wiersza mojej listy, tak aby otworzyło się nowe działanie. Jak to zrobić? Mój kod ArrayAdapter -Android - jak dodać metodę kliknięcia elementu do ArrayAdaptera

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; 
} 

Odpowiedz

8

Zakładając używasz ListActivity implementując OnItemClickListener możesz użyć tego kodu:

ArrayAdapter<Object> ad = new ArrayAdapter<Object>(this, 
       android.R.layout.simple_list_item_checked, items); 
     setListAdapter(ad); 
     ListView list = getListView(); 
     list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 
     //list.setItemChecked(0, true); 
     list.setOnItemClickListener(this); 

EDIT: przeciwnym razie, jeśli nie rozciągają ListActivity, mają ListView w układzie i wymienić ListView list = getListView() z czymś ListView list = findViewById(R.id.listView). Wymienić list.setOnItemClickListener(this) z

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

      } 
     }); 
+0

Czy istnieje sposób powiązania logiki onClick z ArrayAdapter (lub jakimkolwiek innym adapterem)? Mam jeden adapter, ale pełnowymiarowy ListViews, który jest wypełniony nim i byłoby ładniej powiązać go z samym adapterem? –

-2

Po skonfigurowaniu adaptera przy użyciu:

mListView.setAdapter(myCountryListAdapter); 

Następnie można skonfigurować kliknięcie słuchacz dla ListView:

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

Wystarczy wdrożyć AdapterView.OnItemClickListener.

@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); 
} 

Następnie wystarczy ustawić klasę z tą metodą jako onItemClickListener w adapterze.

Powiązane problemy