2012-01-15 2 views
-1
public class ImageAndTextListAdapter extends ArrayAdapter<ImageAndText> { 

// new method 
    private ListView listView; 
    private AsyncImageLoader asyncImageLoader; 
    private ImageAndText imageAndText; 

//constructor 
public ImageAndTextListAdapter(Activity activity, List<ImageAndText> imageAndTexts) { 
    super(activity, 0, imageAndTexts); 


    asyncImageLoader = new AsyncImageLoader(); 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    Activity activity = (Activity) getContext(); 


    //////////////////////////////////////////////////////////////////////////////////////////////// 
    // Load the image and set it on the ImageView 


    //new method 
    // Inflate the views from XML 
    View rowView = convertView; 
    ViewCache viewCache; 

    if (rowView == null) { 
     LayoutInflater inflater = activity.getLayoutInflater(); 
     rowView = inflater.inflate(R.layout.image_and_text_row, null); 
     viewCache = new ViewCache(rowView); 
     rowView.setTag(viewCache); 
    } else { 
     viewCache = (ViewCache) rowView.getTag(); 
    } 
    imageAndText = getItem(position); 

    Button btn2=(Button) findViewById(R.id.button1); 

     btn2.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 

        //........... 
       } 
     }); 

Этот адаптер предназначен для ListView, и он принимает значение image_and_text_row.xml, которое представляет данные строки из списка. Программа разбилась, когда я установил прослушиватель кликов в btn2. Если слушатель удален, программа работает нормально.Внутри адаптера для просмотра есть проблема с нажатием кнопки clicker

Вопрос в том, почему адаптер не может прослушивать нажатие кнопки внутри кода?

+0

Что говорит ваш логарифм? –

+0

Джейсон, вы можете абсолютно прослушивать клик в адаптере. Ваша проблема должна быть в вашем логарифме. Это может даже помочь опубликовать его здесь. –

+0

Какое исключение вы получаете? –

ответ

1

Просто выстрел в темноте:., Но ваша линия Button btn2=(Button) findViewById(R.id.button1); относится к ListActivity или ListView, что адаптер находится в Поэтому R.id.button1 не существует ...

Вы пробовали: Button btn2=((Button)rowView.findViewById(R.id.button1)); Это может быть ваш вопрос (не имея возможности увидеть ваш логарифм, то есть). findViewById() находит детей. Исходный оператор будет искать дочерний элемент Activity или View. Этот новый оператор найдет дочерний элемент rowView.

Конечно, это предположение, поскольку, поскольку вы не описали приложение или проблему полностью, я должен принять согласно информации, которую мы имеем, что есть кнопка для каждой строки.

Надеется, что это помогает,

FuzzicalLogic

P.S. Надеюсь, ты поймал намек на то, что ты получишь дрянные ответы вроде этого, если есть недостаток соответствующей информации. Хороший проводник: 1) Что происходит? 2) Что вы ожидаете? 3) Что указывают ресурсы отладки? 4) Какие дополнительные исследования или концепции нам нужно знать? Это приводит к более длительным вопросам, но они, безусловно, более эффективны, и поэтому ответы на них вытекают из них.

+0

Хорошо, это неправда, он не смог найти View, установив rowView.findById. –

0

Что нужно сделать, это добавить onClick в ваш xml-файл, где находится кнопка. Также убедитесь, что ваша кнопка находится внутри того же макета, который вы раздуваете.

Смежные вопросы