как выполнить действие для просмотра списка в Android

#android

#Android

Вопрос:

в моем приложении я использую просмотр списка. в представлении списка у меня есть три кнопки изображения (воспроизвести, подробно, купить). каждая кнопка изображения имеет индивидуальные действия. как я могу выполнить действие onclick для каждой кнопки изображения в виде списка.

мой код:

 public class AndroidThumbnailList extends ListActivity{
      ..........
   public class MyThumbnaildapter extends ArrayAdapter<String>{
      public MyThumbnaildapter(Context context, int textViewResourceId,String[] objects) {
       super(context, textViewResourceId, objects);
            // TODO Auto-generated constructor stub
       }
      public View getView(int position, View convertView, ViewGroup parent) {
           .........
      }
   }


   public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
    _contentUri = MEDIA_EXTERNAL_CONTENT_URI;
    initVideosId();
  setListAdapter(new MyThumbnaildapter(AndroidThumbnailList.this, R.layout.row, _videosId));
  }



}
  

как написать действие для моего просмотра списка. пожалуйста, помогите мне.

Ответ №1:

Вам нужно будет написать свой собственный адаптер, который расширяет представление, которое вы хотите использовать, а затем назначает прослушиватель OnClick каждому из изображений. Вот несколько примеров кода из одного из моих проектов, который делает нечто подобное (но с одним флажком, к которому я добавляю слушателя).

 public class GroupListAdapter extends BaseAdapter {

private List<Group> groups;

// ... constructors here

@Override
public int getCount() {
    return groups.size();
}

@Override
public Group getItem(int position) {
    return groups.get(position);
}

@Override
public long getItemId(int position) {
    return position;
}

@Override
public View getView(final int position, View convertView, final ViewGroup parent) {
    final Group group = getItem(position);

    final View view;
    if (convertView == null)
        view = LayoutInflater.from(parent.getContext()).inflate(R.layout.group, null);
    else
        view = convertView;

    view.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // do stuff when the rest of the view is clicked
        }
    });

    TextView tv = (TextView) view.findViewById(R.id.group_name);
    tv.setText(group.getName());

    final CheckBox check = (CheckBox) view.findViewById(R.id.group_checkbox);
    check.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // do stuff when clicked
        }
    });


    return view;
}
  

}

Комментарии:

1. Я был в процессе написания очень похожего ответа.

2. я расширяю ListActivity вместо BaseAdapter, пожалуйста, объясните мне, как реализовать ваш код в моем классе.

3. BaseAdapter — это частично реализованный ListAdapter. Это просто избавляет вас от выполнения всей работы самостоятельно и требует от вас только реализации 4 методов.