2011-11-14 64 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

假設你使用的是ListActivity執行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); 

編輯: 否則,如果不延長ListActivity,有一個ListView的佈局,並與像ListView list = findViewById(R.id.listView)更換ListView list = getListView()。替換list.setOnItemClickListener(this)

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

      } 
     }); 
+0

有沒有辦法將onClick邏輯綁定到ArrayAdapter(或任何其他適配器)?我有一個適配器,但多個ListViews,充滿它,它將更好地綁定到適配器本身? –

-2

一旦你使用設置你的適配器:

mListView.setAdapter(myCountryListAdapter); 

然後你可以設置一個點擊監聽器的列表視圖:

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

只需實現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); 
} 

然後,只需使用該方法將該類設置爲適配器中的onItemClickListener即可。

相關問題