Множественный выбор ListViewAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Множественный выбор ListView

Сообщение Anonymous »

Я пытался реализовать множественный выбор в Android ListView. Я хочу выбрать или отменить выбор более одного элемента, и эти элементы должны оставаться выделенными или нет.
Я не хочу использовать флажки для выбора элементов.

Я заложил функционал в свой адаптер. Вот код:

Код: Выделить всё

public class MultiSelectionAdapter extends BaseAdapter {

private List streams;
private LayoutInflater inflater;
private Context context;

// I keep the selected items index.
private static List selectedIndexList = new ArrayList();

public MultiSelectionAdapter(Context context, List streams) {
this.streams = streams;
this.inflater = LayoutInflater.from(context);
this.context = context;

selectedIndexList.clear();
Integer i = -1;
selectedIndexList.add(i);
}

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

//if (convertView == null) {
convertView = inflater.inflate(R.layout.adapter_stream_ins, null);
holder = new ViewHolder();
holder.hTitle = (TextView) convertView.findViewById(R.id.adapter_title);
holder.hProfileImage = (ImageView) convertView.findViewById(R.id.adapter_profileimage);
holder.hMainImage = (WebImageView) convertView.findViewById(R.id.adapter_mainimage);
//convertView.setTag(holder);
//} else {
//  holder = (ViewHolder) convertView.getTag();
//}

for(Integer i : selectedIndexList){
if (position == i) {
// Here I get the view inside the layout and set it to enable (the item has a selector as background)
RelativeLayout mainLayout = (RelativeLayout) ((ViewGroup) convertView).getChildAt(1);
LinearLayout item = (LinearLayout) ((ViewGroup) mainLayout).getChildAt(1);
item.setSelected(true);
}
}

Ins eventItem = (Inspiration) getItem(position);
holder.hTitle.setText(eventItem.getName());
holder.hMainImage.setImageWithURL(context, WebServiceConfig.getImageUrl(eventItem.getImagePath()));

return convertView;
}

public int getCount() {
return this.streams.size();
}

public Event getItem(int position) {
return this.streams.get(position);
}

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

public void add(Event e) {
streams.add(e);
}

public void addAll(List events) {
streams.addAll(events);
}

public void remove(Event e) {
streams.remove(e);
}

public void setSelectdIndexList(List l){
selectedIndexList = l;
notifyDataSetChanged();
}

class ViewHolder {
TextView hTitle;
ImageView hProfileImage;
WebImageView hMainImage;
}


В своих действиях я сохраняю выбранные элементы и индексы в списке

Код: Выделить всё

public List insSelected = new ArrayList();
public static List selecteditems = new ArrayList();
Наконец, в методе ListView setOnItemClickListener я обновляю список и адаптер.

Код: Выделить всё

streamsListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView adapter, View view, int position, long arg3) {
Ins selectedItem = (Ins) streamsListView.getItemAtPosition(position);

if(insSelected.contains(selectedItem)){
insSelected.remove(selectedItem);

selecteditems.remove((Integer)position);
eventAdapter.setSelectdIndexList(selecteditems);
eventAdapter.notifyDataSetChanged();
}else{
insSelected.add(selectedItem);

selecteditems.add((Integer)position);
eventAdapter.setSelectdIndexList(selecteditems);
eventAdapter.notifyDataSetChanged();
}

}
});
Я знаю, что мой код в адаптере совершенно неэффективен, потому что мне приходится рисовать ListView каждый раз, когда я выбираю или отменяю выбор элемента.
Есть идеи, как его улучшить?
Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/193 ... iselection
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Множественный выбор ListView
    Anonymous » » в форуме Android
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Один выбор SQL с левым соединением с последующим сопоставлением в коде или множественный выбор
    Anonymous » » в форуме JAVA
    0 Ответы
    62 Просмотры
    Последнее сообщение Anonymous
  • Средство выбора при начальной загрузке, множественный выбор
    Anonymous » » в форуме Jquery
    0 Ответы
    46 Просмотры
    Последнее сообщение Anonymous
  • Андроид. Как отключить множественный выбор файлов через намерение?
    Anonymous » » в форуме Android
    0 Ответы
    37 Просмотры
    Последнее сообщение Anonymous
  • Множественный выбор списка WPF с помощью CheckBox в шаблоне
    Anonymous » » в форуме C#
    0 Ответы
    37 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Android»