سؤال

كيف أستمع إلى الحدث النقر على 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()

 }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top