2011-08-16 64 views
15

Tôi đã thêm mảng danh sách trong arrayadapter chứa các đối tượng bao gồm hai phần tử/mục, tôi đã thiết lập thành công adapter đó cho setListAdapter, bây giờ tôi muốn lấy các mục đó trong setOnItemClickListener của listview.cách lấy đối tượng từ listview trong setOnItemClickListener trong android?

đây là mã của tôi

TweetListAdaptor adaptor = new TweetListAdaptor(this,R.layout.list_item, tweets);  
    setListAdapter(adaptor); 
    ListView lv = getListView(); 
    lv.setTextFilterEnabled(true); 
    lv.setOnItemClickListener(new OnItemClickListener() 
    { 
    public void onItemClick(AdapterView<?> parent, View view,int position, long id) 
    { 
    //here i want to get the items    
    } 
}); 

Trả lời

6
public void onItemClick(AdapterView<?> parent, View view,int position, long id){ 
    something = tweets[position]; 
} 
+0

dường như đó là giải pháp duy nhất –

2

Bạn muốn nhận được các mặt hàng và làm những gì với họ?

Ví dụ: bạn có thể tạo một thông báo Bánh mì nướng như thế này.

public void onItemClick(AdapterView<?> parent, View view,int position, long id) 
    { 
     Toast.makeText(getApplicationContext(), tweets[position], Toast.LENGTH_SHORT).show(); 

    } 

Hy vọng điều này sẽ hữu ích.

48
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
    int color = parent.getAdapter().getItem(position); 
} 
+0

Cảm ơn. Nó đã giúp tôi rất nhiều. – Ark

+0

Câu trả lời đúng nhất –

+0

Tuyệt vời, đây là câu trả lời – Ramon

-2

getListView().getItemAtPosition(position) sẽ trả về một Object trong bạn TweetListAdaptor

2

và nếu bạn có listview sẵn sàng với tất cả các dữ liệu ngay và muốn được một giá trị quyền sử dụng chỉ Objet:

ViewGroup row = (ViewGroup) listprod.getChildAt(0); 
TextView tvTest = (TextView) row.findViewById(R.id.textnomprod); 

đâu listview của tôi là "listprod" và tôi muốn nhận giá trị ở vị trí , trong đó textnomprod là Objet tôi và tiết kiệm im trong tôi biến tvTest

0
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> adapter, View view, int position, long id) { 
     Windows clickedObject = adapter.get(position); 
    } 
} 

xem xét trong ví dụ trên,

  • đối tượng sử dụng trong listview được đặt tên của Windows,
  • đối tượng của mục được nhấp vào trong chế độ xem danh sách được đặt tên là được nhấp vàoObject,
  • danh sách được sử dụng được gọi là bộ chuyển đổi.

Ngoài ra, hãy đảm bảo tiền tố cho ArrayList của bạn với final.

0

Tôi đã giải quyết vấn đề này bằng cách sử dụng bộ điều hợp của nó đã được đặt thành nó.

TweetListAdaptor adaptor = new TweetListAdaptor(this,R.layout.list_item, tweets);  
setListAdapter(adaptor); 
ListView lv = getListView(); 
lv.setTextFilterEnabled(true); 
lv.setOnItemClickListener(new OnItemClickListener() 
{ 
    public void onItemClick(AdapterView<?> parent, View view,int position, long id) 
    {  
     //here i want to get the items 
     adaptor.getItem(position); // this is your object 
    } 
}); 

Chỉ cần nhớ rằng bộ điều hợp phải được khởi tạo và đặt thành ListView.

Bằng cách này, bạn có thể truy cập các thuộc tính của đối tượng bạn muốn.

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