2013-03-12 22 views
8

Listview ile ilgili bir sorunum var. Liste görünümünde, resim görüntüleme ve metin görünümünden oluşan liste öğeleri bulunur. Metin görünümünde tıklanabilir bağlantılar bulunur. LinkMovementMethod'u metin görünümlerine ayarladığımda, liste öğeleri onclick olayı almaz. Hala (herhangi bir doğru çözümü = bulamıyor kimse bunu çözmek veya listitem teşekkür içindeki tıklanabilir bağlantılar ile TextView kullanarak bir örnek vermek nasıl explane Can İşte adaptörün TextView'un yaratılmasıdır.?.Textview`s LinkMovementMethod bloklar listitem dokunma olayı

TextView text = (TextView) ((LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)) 
         .inflate(R.layout.post_content_text, null); 
SpannableString sString = new SpannableString(d.getText()); 
//I have my own class UrlSpan that contain fields startPosition, endPosition and urlLink 
for (UrlSpan us : ((TextData) d).getUrls()) 
       { 
        URLSpan urlSpan = new URLSpan(us.getUrl()); 
        sString.setSpan(urlSpan, us.getStart(), us.getEnd(), SpannableString.SPAN_INCLUSIVE_INCLUSIVE); 
       } 
text.setText(sString); 
text.setMovementMethod(LinkMovementMethod.getInstance()); 
view.addView(text); 

ve liste öğesi geçerli:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:visibility="visible" > 

    <LinearLayout 
     style="?PostListRow" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_margin="10dp" 
     android:orientation="vertical" 
     android:padding="10dp" > 

     <LinearLayout 
      android:layout_width="fill_parent" 
      android:layout_height="65dp" 
      android:orientation="horizontal" > 

      <ImageView 
       android:id="@+id/user_image" 
       android:layout_width="45dp" 
       android:layout_height="45dp" 
       android:layout_margin="3dp" 
       android:clickable="true" 
       android:src="@drawable/ic_no_photo" /> 

      <LinearLayout 
       android:layout_width="fill_parent" 
       android:layout_height="55dp" 
       android:layout_margin="0dp" 
       android:orientation="vertical" > 

       <TextView 
        android:id="@+id/user_title" 
        android:layout_width="fill_parent" 
        android:layout_height="0dp" 
        android:layout_weight="1" 
        android:clickable="true" 
        android:textSize="@dimen/title_in_list" /> 

       <TextView 
        android:id="@+id/post_datetime" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:layout_marginBottom="5dp" 
        android:layout_marginTop="5dp" 
        android:textSize="@dimen/text_size_small" /> 
      </LinearLayout> 

      <TextView 
       android:id="@+id/post_number" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="right" 
       android:text="123" /> 
     </LinearLayout> 
<!-- it is a view where textview with links is to be added to --> 
     <LinearLayout 
      android:id="@+id/post_data" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" 
      android:weightSum="6" > 
     </LinearLayout> 

     <TextView 
      android:id="@+id/post_view" 
      style="?PostText" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="TextView" 
      android:visibility="gone" /> 

     <LinearLayout 
      android:id="@+id/topic_edit_view" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal" > 
     </LinearLayout> 
    </LinearLayout> 

</LinearLayout> 
+0

kodunuzu koymanız gerekir. Eğer özel bir adaptörünüz varsa, adaptör kodunuzu tıklama listesiyle birlikte koyunuz ... –

+1

Gönderinizle karşılaştım ve burada çözüldüğüne inanıyorum: https://stackoverflow.com/questions/8558732/listview-textview-with- linkmovementmethod-make-list-item-unclickable – m3hughes

cevap

0

deneyin belgelerinden sizin liste görünümü

üzere bu özelliği android:descendantFocusability="beforeDescendants" eklemek için:

Odağı almak için bir Görünüm ararken ViewGroup ve onun torunları arasındaki ilişkiyi tanımlar. Eğer benim liste görünümünde düğmeleri veya edittext ve etc gibi bazı aktif görünümler varsa o zaman descendantFocusability

+0

Bu niteliğin eklenmesinin ne yaptığını açıklayabilirsiniz. – deW1

+0

dokümanlardan, odaklanmak için bir Görünüm ararken ViewGroup ve onun torunları arasındaki ilişkiyi tanımlar. bana öyle görünüyor ki liste görünümünüzde düğmeler veya edittext ve etc gibi bazı aktif görünümleriniz varsa descendantFocusability tanımlamanız gerekir. – greenfrvr

+0

Listede bir SpannableString ve LinkMovementMethod kullanıldığında, bloknottan gelen odaklanmayı engelleme çalışmıyor. Belki de bu kabul edilen cevabın yaklaşımını deneyebilirsiniz ... http://stackoverflow.com/questions/8558732/listview-textview-with-linkmovementmethod-makes-list-item-unclickable – Dallas187

İlgili konular