2011-11-14 11 views
6

私は単純なArrayAdapterを持っています。新しいアクティビティが開くように、リストの各行をクリックするたびにリスナーを設定する必要があります。どうすればいい?マイArrayAdapterコード - あなたが使用してアダプタを設定したらAndroid - アイテムのクリックメソッドを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 を実装すると、このコードを使用できます。

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:あなたは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ロジックをバインドする方法はありますか?私は1つのアダプタを持っていますが、複数の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として設定します。

関連する問題