2013-12-01 2 views
1

Я использую пользовательский список для отображения элементов.Проблема с удалением элемента из пользовательского списка просмотров

SwipeDismissListViewTouchListener touchListener = 
      new SwipeDismissListViewTouchListener(
        lv, 
        new SwipeDismissListViewTouchListener.DismissCallbacks() { 
         @Override 
         public boolean canDismiss(int position) { 
          return true; 
         } 

         @Override 
         public void onDismiss(ListView listView, int[] reverseSortedPositions) { 
          for (int position : reverseSortedPositions) { 
           View child = listView.getChildAt(position); 
           if(child != null) { 
            TextView cat = (TextView) child.findViewById(R.id.Category_name); 
            TextView pri = (TextView) child.findViewById(R.id.Price); 
            TextView det = (TextView) child.findViewById(R.id.Details); 
            String time = det.getText().toString().substring(9); 
            db_data.delete(cat.getText().toString(), pri.getText().toString(), time,edit_date); 
            adapter.remove(adapter.getItem(position)); 
           } 
          } 
          adapter.notifyDataSetChanged(); 
         } 
        }); 
    lv.setOnTouchListener(touchListener); 

В этом случае, если я не использовал пользовательские ListView я могу удалить элемент из ListView с помощью удалить() метод выше, но я использую, что для пользовательских ListView, он показывает ошибку при отдалении method.So как удалить элемент с помощью onDismiss из адаптера.

CustomListAdapter_Data_Edit.java

public class CustomListAdapter_Data_Edit extends BaseAdapter{ 

private ArrayList<Data> listData; 
private LayoutInflater layoutInflater; 
private ArrayList<Data> arraylist; 

public CustomListAdapter_Data_Edit(Context context, ArrayList<Data> listData) { 
    this.listData = listData; 
    layoutInflater = LayoutInflater.from(context); 
    this.arraylist = new ArrayList<Data>(); 
    this.arraylist.addAll(listData); 
} 

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

@Override 
public Object getItem(int position) { 
    return listData.get(position); 
} 

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

public View getView(int position, View convertView, ViewGroup parent) { 
    ViewHolder holder; 
    if (convertView == null) { 
     convertView = layoutInflater.inflate(R.layout.listview_item_row_for_data, null); 
     holder = new ViewHolder(); 
     holder.CatNameView = (TextView) convertView.findViewById(R.id.Category_name); 
     holder.DetailsView = (TextView) convertView.findViewById(R.id.Details); 
     holder.PriceView = (TextView) convertView.findViewById(R.id.Price); 
     convertView.setTag(holder); 
    } else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 

    holder.CatNameView.setText(listData.get(position).getCat()); 
    holder.DetailsView.setText(listData.get(position).getTime()); 
    holder.PriceView.setText(listData.get(position).getPrice()); 

    return convertView; 
} 

static class ViewHolder { 
    TextView CatNameView; 
    TextView DetailsView; 
    TextView PriceView; 
} 

public void removeRecord(int index) { 
    arraylist.remove(index); 
} 

}

+0

какая ошибка разместить вашу ошибку LogCat. – Hariharan

+0

logcat не произнес никакой ошибки. Когда я ввожу его, он говорит: «Метод remove (String) не определен для типа CustomListAdapter_Data_Edit ' –

+0

, здесь введите код вашего класса адаптера – pandabear

ответ

1

Попробуйте это ..

listData.remove(postion); // this will remove the item from the ArrayList 

adapter.notifyDataSetChanged(); //this will refresh your adapter 
+0

Спасибо. Он работает нормально. –

+0

@ Vinoch рад, что это помогло. – Hariharan

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