2014-01-18 5 views
0

목록보기에서 선택한 항목을 제거하려고합니다. 나는이 코드를 썼다.listview에서 여러 항목 제거

int items; 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent intent) { 
    super.onActivityResult(requestCode, resultCode, intent); 
    if(requestCode == 1) { 
     try { 
      for(int a=0; a<adapter.getPositions().size(); a++) { 
       applicationInfo = getPackageManager().getApplicationInfo(adapter.getList().get(a), a); 
      } 
     } catch(PackageManager.NameNotFoundException e) { 
      for(int a=0; a<adapter.getPositions().size(); a++) { 
      items = adapter.getPositions().get(a); 
      appInfoArrayList.remove(items); 
      adapter.notifyDataSetChanged(); 
      mActionMode.finish(); 
      } 
      } 

    } 
    else { 

    } 
} 

이 코드는 작동하지만 문제는 다음과 같습니다. 마지막으로 선택한 항목 만 제거하십시오. 예를 들어 항목 1,2와 3을 클릭하면이 코드로 항목 3 만 제거됩니다. 왜? "items"변수의 내용은 각주기마다 업데이트해서는 안됩니다.

답변

0

사용하여 활동에 다음

public void remove(int[] items) { 
    for(int position : items) { 
     // in your case it might be appInfoArrayList.remove(items[position]) 
     Collection.remove(items[position]) 
    } 
} 

등을 제거하기 위해 어댑터 설정 제거 방법 및 항목의 위치를 ​​포함하는 패스 int 배열에서

0

에 대한 후 notifydatasetchanged

int items[] = new int[adapter.getPositions().size()]; 
    //some code above ... 
    catch(PackageManager.NameNotFoundException e) { 
     for(int a=0; a<adapter.getPositions().size(); a++) { 
      items[a] = adapter.getPositions().get(a); 
     } 
     adapter.remove(items); 
     adapter.notifyDataSetChanged(); 
     mActionMode.finish(); 
    } 

아이디어는이다 제거 할 위치를 가져온 다음 어댑터에이 정보를 전달하여이 위치를 모두 제거한 다음 어댑터에 변경 사항을 적용하도록 알립니다.

난 당신의 try catch 블록이 시도가 필요하지 않습니다 같아요

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent intent) { 
    super.onActivityResult(requestCode, resultCode, intent); 
    int items[] = new int[adapter.getPositions().size()]; 
    if(requestCode == 1) { 
    for(int a=0; a<adapter.getPositions().size(); a++) { 
     items[a] = adapter.getPositions().get(a); 
    } 
    adapter.remove(items); 
    adapter.notifyDataSetChanged(); 
    mActionMode.finish(); 
    } 
} 
+0

나는 제거 방법이 오류를 얻을 : 컬렉션 확인할 수 없습니다. 어떻게 해결할 수 있습니까? – user3187166

+0

내 코드의 컬렉션은 어댑터에 전달할 List 개체입니다. 컬렉션 나는 일반적으로 어떤 자바 컬렉션 즉 목록 개체 말을 의미. 즉 : 목록 데이터; 그래서 나는 data.remove(); 귀하의 경우에는 "appInfoArrayList" –