2014-04-19 3 views
1

ArrayList 컬렉션을 사용하여 Listview를 채 웁니다. 내 ListView에는 두 개의 개별 행 유형이 있습니다.ItemviewListener의 listview에서 항목을 제거하십시오.

머리글과 바닥 글.

다음 목록에서 머리글을 클릭 할 때 일부 항목을 제거하려고하는 내 Listview에서 ExpandableListView 기능을 구현하려고합니다. 나는 항목을 통해 루프에이 기능을 사용하여 항목

을 제거하고
private void removeItems(int value) 
{ Log.e(Constant.LOG, items.size()+""); 
    for (int i = value;i < items.size(); i++) { 
     if(!items.get(i).isSection()) 
      items.remove(i); 
    } 
    Log.e(Constant.LOG, items.size()+""); 
    adapter = new EntryAdapter(this, items, this); 
    mListView.setAdapter(adapter); 
} 

질문 : 나는 한 번에 목록에서 모든 항목을 제거 할 수없는 나는, 거기에 일부 숙박!

나는 adapter.count()를 통해 루핑을 시도했다. 하지만 행운

마이리스트 : 제 1 개 항목 1 개 항목이 항목 N 제 2 하지만 모든 항목이 왜 한 번에 삭제되지 제 1 절 클릭 할 때! 활동에 List에 더 많은 복잡한 기능이 포함되어 있으므로이 단계에서 Expandable Listview를 사용할 수 없습니다. 내가 잘못 가고있는 곳에서 도와주세요!

답변

1

새로 만들기 ArrayList<Collection>을 작성한 다음 항목을 추가 한 다음 removeAll(collection)을 사용하십시오.

TRY THIS :

private void removeItems(int value) 
    { Log.e(Constant.LOG, items.size()+""); 
    ArrayList<Collection> deleteItems= new ArrayList<Collection>(); 

    for (int i = value;i < items.size(); i++) { 
    if(!items.get(i).isSection()) 
     deleteItems.add(items.get(i)); 
} 
items.removeAll(deleteItems); 
Log.e(Constant.LOG, items.size()+""); 
adapter = new EntryAdapter(this, items, this); 
mListView.setAdapter(adapter); 
} 

편집

때마다 당신은 당신이 내부의 요소의 인덱스를 변경, 항목을 삭제합니다.

: 당신을 가정하자 삭제하는 목록 1 다음 목록 [2]이된다 이제 카운터로 이동 때문에 따라서 코드가 목록 1 다음 시간을 건너 뜁니다 1 및 목록 여기에 2

하기이 달성 할 수있는 다른 방법이 있습니다 Removing item while iterating it

+0

오 하시군. OLD List를 사용하여 항목을 업데이트/제거하고 크기가 변함을 잊어 버렸습니다. 그 또 다른 배열 목록은 나를 위해 트릭을했습니다. 감사! –

+0

더 많은 트릭을 보려면 내 편집 된 답변보기 :) –

+0

감사합니다 mahn, 내 대답은 아래 참조 우리는 기본적 으로이 있습니다. Arraylist 제거하고 모든 메서드를 사용하여 Iterator를 사용하여 항목을 추가하고 제거합니다. ;) –

0

그래서 지금 정확히 무엇을했는지. 항목을 다시 반복하는 대신에 다음과 같이했습니다.

다른 목록을 작성하고이를 병렬로 병렬로 채 웁니다.

items.add(user); 
// after populating items did this 
newItems.addAll(items); // same collection ArrayList 

마지막으로 removeAll 및 addAll 메소드를 사용하여 주 배열로 재생할 수 있습니다.

items.removeAll(newItems); // remove items 
items.addAll(afterPosition,newItems); // add items after position 
관련 문제