2011-11-14 37 views
6

Tôi có một ArrayAdapter đơn giản. Tôi muốn thiết lập trình lắng nghe cho mỗi lần nhấp vào hàng của danh sách của tôi sao cho Hoạt động mới mở ra. Tôi sẽ làm như thế nào? đang ArrayAdapter My -Android - cách thêm phương thức nhấp vào mục vào 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; 
} 

Trả lời

8

Giả sử bạn đang sử dụng một ListActivity triển khai OnItemClickListener bạn có thể sử dụng mã này:

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: Ngược lại, nếu bạn không mở rộng ListActivity, có một listview trong cách bố trí của bạn và thay thế ListView list = getListView() với một cái gì đó giống như ListView list = findViewById(R.id.listView). Thay thế list.setOnItemClickListener(this) bằng

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

      } 
     }); 
+0

Có cách nào để ràng buộc logic onClick vào ArrayAdapter (hoặc bất kỳ bộ điều hợp nào khác) không? Tôi có một bộ chuyển đổi, nhưng ListViews nhiều, được lấp đầy với nó, và nó sẽ là đẹp hơn để ràng buộc nó vào Adapter chính nó? –

-2

Một khi bạn đã thiết lập adapter của bạn sử dụng:

mListView.setAdapter(myCountryListAdapter); 

Sau đó, bạn có thể thiết lập một listener nhấp chuột cho listview:

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

Chỉ cần triển khai 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); 
} 

Sau đó, chỉ cần đặt lớp học với phương thức đó là onItemClickListener trong bộ điều hợp của bạn.

Các vấn đề liên quan