5

Özel bir bağdaştırıcı ve liste görünümü kurulumuna sahip bir onItemClickListener ayarlamaya çalışıyorum. Dinleyicinin çalışmasını sağlayamıyor gibiyim. Düzgün kurduğumu sanmıyorum. Herhangi bir yardım takdir edilir. Çok teşekkürler.onItemClickListener

Adaptör:

public class ModuleAdapter extends ArrayAdapter<Module> { 

Context context; 
int layoutResourceId; 
Module data[]; 

public ModuleAdapter(Context context, int layoutResourceId, 
     Module data[]) { 
    super(context, layoutResourceId, data); 
    this.layoutResourceId = layoutResourceId; 
    this.context = context; 
    this.data = data; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View row = convertView; 
    ModuleHolder holder = null; 

    if(row == null) 
    { 
     LayoutInflater inflater = ((Activity)context).getLayoutInflater(); 
     row = inflater.inflate(layoutResourceId, parent, false); 

     holder = new ModuleHolder(); 
     holder.modJapTitle = (TextView)row.findViewById(R.id.moduleJapTitle); 
     holder.modEngTitle = (TextView)row.findViewById(R.id.moduleEngTitle); 
     holder.modComp = (TextView)row.findViewById(R.id.moduleCompletion); 
     holder.modRating = (RatingBar)row.findViewById(R.id.moduleScore); 

     row.setTag(holder); 
    } 
    else 
    { 
     holder = (ModuleHolder)row.getTag(); 
    } 

    Module module = data[position]; 
    holder.modJapTitle.setText(module.moduleJapaneseTitle); 
    holder.modEngTitle.setText(module.moduleEnglishTitle); 
    holder.modComp.setText(module.moduleCompletionRate); 
    holder.modRating.setRating(module.moduleRating); 

    return row; 
} 

static class ModuleHolder 
{ 
    TextView modEngTitle; 
    TextView modJapTitle; 
    TextView modComp; 
    RatingBar modRating; 
} 

}

Uygulama:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
style="@style/moduleBox" 
android:id="@+id/moduleBoxSingle" > 

<TextView 
    android:id="@+id/moduleJapTitle" 
    style="@style/moduleTitleJap" /> 
<TextView 
    android:id="@+id/moduleCompletion" 
    android:layout_above="@+id/moduleSepartor" 
    style="@style/moduleCompletion" /> 
<View 
    android:id="@+id/moduleSepartor" 
    android:layout_below="@+id/moduleJapTitle" 
    style="@style/moduleSeperator" /> 
<TextView 
    android:id="@+id/moduleEngTitle" 
    android:layout_below="@+id/moduleSepartor" 
    style="@style/moduleTitleEng" /> 
<RatingBar 
    android:id="@+id/moduleScore" 
    android:layout_below="@+id/moduleSepartor" 
    style="@style/moduleRating" 
    android:layout_alignParentRight="true" /> 

</RelativeLayout> 
+1

Her şey iyi görünüyor görünüyor düzeninde kök görünümünde bu satırı ekleyin. Belki bir UI problemi? Neden bir tost atmak yerine, logkata yazmıyorsun. Sadece dinleyicinizin aranmadığından% 100 emin olmak için. –

+1

düzeninizi burada xml gönderebilirsiniz. – rajpara

+1

Merhaba, cevabınız için teşekkür ederim. Logcat'a yazmak için satır ekledim. Ayrıca, her bir liste öğesi için kullanılan XML düzenine ekledim. – mwrazam

cevap

16

this gibi benzer bir sorun olduğunu düşünüyorum.

XML

android:focusableInTouchMode="false" 
android:clickable="false" 
android:focusable="false" 

yılında senin TextView kod aşağıda ekleyin ve yeniden deneyin.

+3

Bu hile yaptı! Çok teşekkür ederim. Çok fazla saç kurtuldu. :) – mwrazam

4

: Ayrıca burada

ModuleAdapter moduleData = new ModuleAdapter(this, R.layout.module_box_item, module_data); 
    ListView listView1 = (ListView)findViewById(R.id.moduleListContainer); 
    listView1.setAdapter(moduleData); 
    listView1.setCacheColorHint(Color.TRANSPARENT); 
    listView1.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      Log.v("Module Item Trigger", "Module item was triggered"); 
      Toast.makeText(getApplicationContext(), "hello", Toast.LENGTH_SHORT).show(); 
     } 
    }); 

listedeki tek öğelerinden biri için XML Düzen olduğu Her şeyden önce Sendeki bu onItemClick()

public void onItemClick(AdapterView parent, View v, int position, long id) { 
    Toast.makeText(getApplicationContext(), "hello", Toast.LENGTH_SHORT).show(); 
} 

aşağıda verildiği gibi

implements OnItemClickListener 

sonra bir işlev eklemek aşağıdaki işleyicisi ile sınıfını impliments Ve listview veri adaptörü ayarladığınızda sonra aşağıdaki satırı eklemek için kod bu sizin için çalışacaktır

itemlist.setOnItemClickListener(this); 

Umut ve ...

+1

Merhaba, cevabınız için teşekkür ederim.Bunu denedim, ancak sonuç yukarıda gördüğüm orijinal kodla aynıydı. Belki de bu dinleyiciyi ateşlemeyen kodumda başka bir sorun var mı? – mwrazam

1
Toast en Bağlamında yapılan Değiştir ve Katma SysOut

// Olaylar idare edecek yöntemi:

...

ListView lv = (ListView)findViewById(R.id.Your_ListView_Id); // If it extends Activity. 

VEYA

ListView lv = getListView; // If it extends ListActivity. 
lv.setOnItemClickListener(this); // Make the Activity implement onItemClickListener 
lv.setAdapter(your_adapter); 

Düzenlenen kısmı bu deneyin.

public void onItemClick(AdapterView parent, View v, int position, long id{ 
    Toast.makeText(Your_Activity_Name.this, "hello", Toast.LENGTH_SHORT).show(); 
    System.out.println("This is a Test"); 
} 

SİZ LOG FİYATLARI .. SYSOUT TABLOSU BASKILI GİRMEKTEDİR GELMEZ !!

+1

Merhaba, mesajınız için teşekkürler. Ne yazık ki, bu da işe yaramıyor. Tost mesajı hala ateş etmiyor. – mwrazam

+1

Sadece bir min ....... bunu deneyin .. Toast.make Toast.makeText (Your_Activity_Name.this, "merhaba", Toast.LENGTH_SHORT) .show(); –

İlgili konular