2011-09-06 15 views
5

Chcę dodać przycisk do każdego wiersza mojego widoku listy. Stworzyłem plik XML o nazwie row.xml w moim folderze układu i dodałem dwa widoki tekstu i przycisk w tym pliku. Ale po dodaniu przycisku nie mogę kliknąć elementu widoku listy. Mogę tylko kliknąć przycisk. Oto row.xml:Dodawanie przycisku do każdego wiersza w widoku listy

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


    <TextView 
     android:id="@+id/text11" 

     android:layout_alignParentLeft="true" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
    android:textSize="25sp" 
    android:textColor="#000000" 
     /> 
      <TextView 
     android:id="@+id/text2" 

     android:layout_alignParentLeft="true" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
    android:textSize="10sp" 
    android:textColor="#000000" 
     /> 
      <Button android:text="Button" android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button> 
</LinearLayout> 

Chcę odnieść się do TextView i przycisk w mojej działalności. Proszę, pomóżcie mi i zasugerujcie kilka pomysłów.

Odpowiedz

1
+0

dzięki przyjacielu. mam to. ale jak znaleźć przycisk według ich id, tak jak w pliku row.xml, a mój główny plik układu jest inny. pls help – hussain

+0

@hussain: spójrz na moją zredagowaną odpowiedź. – user370305

+0

Przycisk = (przycisk) view.findViewById (R.id.btn); W tym widoku widok twojego pliku rw.xml po nadmuchaniu go. – user370305

0

Proszę sprawdzić ten link ...

http://commonsware.com/Android/excerpt.pdf

w tym pdf na stronie 104 , dodał obraz w każdym rzędzie widoku listy. Zamieniasz go na przycisk ..

Mam nadzieję, że to rozwiązuje twój problem.

+0

104 strona? nie ma strony 104 zaczyna się od strony 153 – cc4re

+0

sprawdź stronę 175. –

1

Można użyć niestandardowej karty (rozszerzenie adaptera tablicowego jest dość proste). W metodzie getView ustaw onClickListener na swoim TextView, w ten sposób zarówno przycisk, jak i inne części ListItem będą reagowały na dotyk.

1

Jeśli chcesz eksperymentować coś nowego dla sprawdzenia problemu LINK

nadzieję, że to będzie pomocne.

8

Miałem podobny problem. Prostą sztuczką jest dodanie do Twojego przycisku android:focusable="false".

+0

Dziękuję. W końcu znalazłem rozwiązanie, które zadziałało dla mnie! W moim wierszu widoku listy znajdują się dwa przyciski: po lewej i po prawej. Te dwa przyciski działały, ale kiedy kliknąłem nigdzie indziej w wierszu, nie wywołało ono połączenia zwrotnego onItemSelected. – hellaandrew

+0

Nie wiem dlaczego, ale nie zadziałało dla mnie – fnc12

1

trzeba dodać aktywowana = "false" i można

<Button 
     android:id="@+id/bt_do" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     **android:focusable="false"** /> 

w karty

public class MyAdapter extends BaseAdapter { 
    private Context context; 
    private List<Objet> objects; 
    private OnClickListener listener; 

    public MyAdapter(Context context, List<Objet> objects, 
      OnClickListener listener) { 
     this.context = context; 
     this.objects = objects; 
     this.listener = listener; 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     if (convertView == null) { 
      LayoutInflater infalInflater = ((Activity) context) 
        .getLayoutInflater(); 
      convertView = infalInflater.inflate(R.layout.my_line_list, null); 
     } 
     Button bt_do=(Button)convertView.findViewById(R.id.bt_do); 
     bt_do.setOnClickListener(listener); 
     return convertView; 

    } 

    @Override 
    public boolean hasStableIds() { 
     return true; 
    } 

    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return objects.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     // TODO Auto-generated method stub 
     return objects.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     return position; 
    } 

} 

aw swojej działalności stworzyć i wdrożyć adapter un słuchacza przycisku.

Powiązane problemy