2012-09-30 3 views
0

을 삭제 한 후 여기 내 상황에 맞는 메뉴에서 삭제 호출입니다 :업데이트 목록보기 MySQL의 데이터

@Override 
    public boolean onContextItemSelected(MenuItem item) { 

     AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item 
       .getMenuInfo(); 
     int clickedPosition = info.position; 
     tvInt = reviews.get(clickedPosition); 

     switch (item.getItemId()) { 
     case R.id.Delete: 

      new DeleteCommentTask().execute(); 

      reviews.remove(clickedPosition); 
      adapter.notifyDataSetChanged(); 

      Toast.makeText(getActivity(), "Review Deleted", 
        Toast.LENGTH_SHORT).show(); 

      return true; 

     } 
     return false; 

    } 

내가 내 데이터베이스에서 주석을 제거하지 내 DeleteCommentTask에서 다음을 확인 할. 하지만 ListView가 업데이트되지 않습니까? UPDATE

: 여기 은 내가 사용하고 내 어댑터입니다 :

  MyReviewObject co = new MyReviewObject[reviews.size()]; 
      int index = 0; 

      for (@SuppressWarnings("unused") 
      String i : reviews) { 
       co[index] = new MyReviewObject(datelist.get(index), 
         reviews.get(index), items.get(index), 
         cats.get(index)); 
       index++; 
      } 

      adapter = new MyReviewAdapter(getActivity(), co); 
      setListAdapter(adapter); 
+0

축하연을 받고 있습니까? –

+0

'DeleteCommentTask'는 별도의 스레드라고 생각합니까? 'reviews.remove (clickedPosition);를 호출하십시오. adapter.notifyDataSetChanged();'삭제 스레드를 실행 한 후. –

+0

내 AsyncTask의 PostExecute에서 호출하면 clickedPosition이 범위를 벗어납니다 – KickingLettuce

답변

1

reviews.remove (clickedPosition을)하지 마십시오 업데이트 된 대답

를 참조하십시오;

어댑터의 getView에서 사용 된 곳에서 데이터 소스의 주석을 제거하기 만하면됩니다. 끈의 Arraylist에게서 말한다. 이 단지 통지 어댑터 후

adapter.notifyDataSetChanged(); 
Toast.makeText(getActivity(), "Review Deleted", Toast.LENGTH_SHORT).show(); 

있는 위치를 알려줍니다 DeleteCommentTask의 실행 방법에 인수를 전달하려고

이 DeleteCommentTask의 onPostExecute이 코드를 실행하려고 트릭을 할 것 것 제거.

+0

작동하지 않았습니다. 누구든지'reviews.remove (clickedPosition);'가 내 목록에서 항목을 제거하는 적절한 방법인지 확인할 수 있습니까? – KickingLettuce

+0

사용중인 어댑터 유형을 알려주고 자 제 질문을 업데이트했습니다. 나는 단지 어댑터 데이터의 일부인 '리뷰'를 삭제하려고 시도하는 것이 잘못이라고 생각합니다. – KickingLettuce

0

이 작동하지 않는 이유는이 때문에입니다 : "당신은/제거 공동 배열에서 항목을 삭제해야 그의 ArrayList 사용 권장/수 없습니다."MyReviewObject을

"어댑터에." 동적으로 축소 할 수있는 ArrayList을 사용해야하는데 Array는 그렇게 할 수 없습니다. 또한, 난 그냥 단일 문자열을 제거했다 ArrayList. 내 개체 안에는 여러 ArrayList가 있습니다. 그래서 전체 개체 대신을 제거해야합니다.