2011-11-22 33 views
11

Khi chúng tôi triển khai OnItemClickListener, chúng tôi phải triển khai phương pháp onItemClick là phương pháp trừu tượng trong giao diện OnItemClickListener. Trong phương thức onItemClick có bốn đối số.Sự khác biệt giữa đối số "int" và "long" trong onItemClick trong Android

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
    Toast.makeText(this, "Clicked on : " + arg2 + " long arg : " + arg3, 
        Toast.LENGTH_LONG).show(); 
} 

Điều tôi cần biết là sự khác biệt giữa hai đối số cuối cùng (int arg2, long arg3). Như bạn thấy trong mã của tôi, khi tôi cố gắng Toast, tôi nhận được cùng một giá trị cho cả hai đối số.

+0

Tôi có con số nó ra rõ ràng ... [link] (http : //anujarosha.wordpress.com/2011/11/30/how-to-use-baseadapter-and-onitemclicklistener-in-android/) – AnujAroshA

Trả lời

2

Câu trả lời đã cho là hữu ích. Nhưng câu trả lời cần thiết, tôi có nghĩa là câu trả lời chính xác tôi muốn đã được đăng tải như là một bình luận cho câu hỏi của bản thân mình. Nhưng điều đó sẽ không làm tăng "mức chấp nhận" của tôi. Vì vậy, tôi nghĩ đặt liên kết là câu trả lời cho câu hỏi. Đây là số link cho câu trả lời.

+0

Câu trả lời chỉ liên kết không phải là câu trả lời hay. –

4

Cân nhắc đọc the documentation.

int là vị trí xem, long là ID mặt hàng.

(Chúng ta không thể thấy rằng bạn nhận được giá trị tương tự cho cả hai, chúng ta chỉ nhìn thấy mã của bạn, chứ không phải màn hình của bạn.)

+2

Tôi không thể tải lên bất kỳ hình ảnh caz Tôi mới vào Stackoverflow và cũng có tôi đã đọc tài liệu và họ giải thích nó trong cùng một cách. Tôi cần giải thích thêm. Đó là lý do tại sao tôi đăng câu hỏi ở đây. Tôi rất vui mừng nếu bạn có thể chỉ cho tôi một ví dụ mã nơi tôi có thể thấy làm thế nào chúng ta có thể sử dụng hai đối số cuối cùng. – AnujAroshA

1

int giá trị đại diện cho vị trí mặt hàng, và dài giá trị đại diện cho mục Id..

public abstract void onItemClick (AdapterView<?> parent, View view, int position, long id) 

parent  The AdapterView where the click happened. 
view  The view within the AdapterView that was clicked 
      (this will be a view provided by the adapter) 
position The position of the view in the adapter. 
id   The row id of the item that was clicked. 
+0

+1 thông tin đẹp nhưng từ Android Doc :) –

+0

Trong danh sách, khi chúng tôi nhấp vào một mục, gọi lại "vị trí" của mục đó. Vậy "id" là gì. Nếu bạn có thể giải thích một số điều như vậy tôi sẽ rất biết ơn. Tôi đã làm công việc nhà của tôi (đọc tài liệu Android) trước khi đặt câu hỏi này ở đây. Vì vậy, hãy giải thích một số điều hơn hoặc một cái gì đó khác với tài liệu. Cảm ơn bạn (http://developer.android.com/reference/android/widget/AdapterView.OnItemClickListener.html#onItemClick%28android.widget.AdapterView%3C?%3E,%20android.view.View,%20int,%20long % 29) – AnujAroshA

+0

cho phép chúng tôi lấy 5 mục trong danh sách, các vị trí bắt đầu từ số không (0,1,2,3,4) là vị trí cho các mục và id có nghĩa là tự động nó sẽ được tạo ra bởi android tại thời gian chạy để nhận ra các mặt hàng. –

1

Theo ý kiến ​​của tôi, thông qua vị trí, bạn có thể lấy mục hàng với getItem của bộ điều hợp (vị trí). Vì vậy, vị trí có nghĩa là vị trí dữ liệu trong bộ điều hợp.

Đối với thông số id, tôi nghĩ đó là một phương pháp trợ giúp, như bạn biết, dữ liệu trong bộ điều hợp luôn là máy ghi. nói chung, một máy ghi âm nên có một cột id (một cái gì đó giống như id cơ sở dữ liệu). khi mã hóa, bạn có thể lấy item qua vị trí, sau đó lấy id của item (nếu item có id). nhưng bạn có thể nhận được "id" như vậy trực tiếp với tham số "id". bạn có thể nhận thấy: vị trí là loại "int" trong khi "id" là loại "dài".

Nhân tiện, nếu bạn muốn sử dụng tham số id, bạn phải triển khai phương thức getItemId() trong bộ điều hợp. việc thực hiện mặc định trong ArrayAdapter chỉ trả về vị trí.

25

Tôi có cùng câu hỏi với bạn. Tuy nhiên, câu trả lời ở đây không vô cùng hữu ích. Tôi không hỗ trợ các câu trả lời tự tìm kiếm, đặc biệt khi tài liệu được gọi là không rõ ràng. Mặc dù vậy, tôi đã tự tìm kiếm và sau đây là những gì tôi đã tìm thấy.

Giá trị int là vị trí của xem trong mẹ. Đối với ListView, đó là số hàng. Hàng trên cùng là vị trí 0, hàng thứ hai là vị trí 1, hàng thứ ba là vị trí 2, v.v. Lưu ý rằng nếu ListView của bạn có chế độ xem tiêu đề (như nếu bạn đã thực hiện ListView.addHeaderView(View)) thì chế độ xem tiêu đề sẽ là vị trí 0 và thực tế các hàng sẽ bắt đầu đánh số của chúng tại 1.

Đôi khi giá trị dài tương tự như vị trí int và đôi khi nó khác nhau.Nếu bạn đang sử dụng ArrayAdapter hoặc SimpleAdapter thì chúng giống nhau (ngoại trừ trường hợp có chế độ xem tiêu đề và sau đó chúng bị tắt). Đối với số CursorAdapter (và do đó là SimpleCursorAdapter), mã dài trả về id hàng của bảng, nghĩa là, _id. Đây là dài chứ không phải là int vì cơ sở dữ liệu về mặt lý thuyết có nhiều hàng hơn int có thể giữ trong khi ListView thì không.

Dưới đây là một vài câu trả lời liên quan khác:

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