كيفية التعامل مع ListView انقر في Android
-
20-09-2019 - |
سؤال
كيف أستمع إلى الحدث النقر على ListView؟
هذا ما لدي الآن
ListView list = (ListView)findViewById(R.id.ListView01);
...
list.setAdapter(adapter);
عندما أفعل ما يلي
list.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView parentView, View childView,
int position, long id)
{
setDetail(position);
}
public void onNothingSelected(AdapterView parentView) {
}
});
هذا لا يبدو أنه يفعل أي شيء عند النقر.
ويعيش كل هذه التعليمات البرمجية داخل فصل يمتد النشاط.
المحلول
في عرض القائم الخاص بك ، استخدم setOnItemClickListener
نصائح أخرى
افترض أن كائن ListView هو LV ، قم بما يلي-
lv.setClickable(true);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
Object o = lv.getItemAtPosition(position);
/* write you handling code like...
String st = "sdcard/";
File f = new File(st+o.toString());
// do whatever u want to do with 'f' File object
*/
}
});
تحتاج إلى تعيين عرض مضخم "Clickable" و "قادر على الاستماع إلى النقر فوق الأحداث" في طريقة GetView () فئة المحول.
convertView = mInflater.inflate(R.layout.list_item_text, null);
convertView.setClickable(true);
convertView.setOnClickListener(myClickListener);
وأعلن عن مستمع النقر في القائمة الخاصة بك على النحو التالي ،
public OnClickListener myClickListener = new OnClickListener() {
public void onClick(View v) {
//code to be written to handle the click event
}
};
هذا صحيح فقط عند تخصيص المحول عن طريق تمديد BaseAdapter.
راجع Android_SDK/SANSERS/APIDEMOS/SRC/COM/مثال/Android/API/VIEW/LIST14.JAVA لمزيد من التفاصيل
الإجابتين قبل صحة الألغام - يمكنك الاستخدام OnItemClickListener
.
من الجيد أن نلاحظ أن الفرق بين OnItemClickListener
و OnItemSelectedListener
, ، على الرغم من أن يبدو خفيًا ، إلا أنه مهم في الواقع ، حيث يرتبط اختيار العناصر والتركيز بوضع اللمس الخاص بك AdapterView
.
بشكل افتراضي ، في وضع اللمس ، لا يوجد اختيار وتركيز. يمكنك إلقاء نظرة هنا لمزيد من المعلومات حول هذا الموضوع.
هذا الحل هو الحد الأدنى حقًا ولا يعبث رمزك.
في الخاص بك list_item.xml (ليس ListView!) قم بتعيين السمة Android: Onclick مثله:
<RelativeLayout android:onClick="onClickDoSomething">
ثم في نشاطك ، اتصل بهذه الطريقة:
public void onClickDoSomething(View view) {
// the view is the line you have clicked on
}
عليك أن تستخدم setOnItemClickListener
احدهم قال.
يجب أن يكون الرمز هكذا:
listView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// When clicked, show a toast with the TextView text or do whatever you need.
Toast.makeText(getApplicationContext(), ((TextView) view).getText(), Toast.LENGTH_SHORT).show();
}
});
أولاً ، يجب أن يقوم الفصل بتنفيذ Click Listenener:
implements OnItemClickListener
ثم اضبط مستمعًا على ListView
yourList.setOnItemclickListener(this);
وأخيراً ، قم بإنشاء طريقة CLIC:
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
Toast.makeText(MainActivity.this, "You Clicked at " +countries[+ position], Toast.LENGTH_SHORT).show();
}
يمكنك إلقاء نظرة وتنزيل الرمز هنا
استخدم API SetOnitemClickListener () في نشاطك. فيما يلي العينة.
listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<> parent, View view, int position, long id)
{
// your code here.
}
});
في Kotlin ، أضف مستمعًا إلى ListView الخاص بك بسيط مثل Java
your_listview.setOnItemClickListener { parent, view, position, id ->
Toast.makeText(this, position, Toast.LENGTH_SHORT).show()
}