2013-03-12 3 views
3

비슷한 질문 하나만 발견되어 도움이되지 않았습니다. 내가 붙어서 네가 나를 도울 수 있기를 바란다.내 어댑터에서 ExpandableListView 새로 고침

이 내 사용자 정의 어댑터 (단지 관련 부분)입니다 :

MyExpandableListAdapter :

public class MyExpandableListAdapter extends BaseExpandableListAdapter { 

    //... 

    @Override 
    public View getChildView(int groupPosition, int childPosition, 
      boolean isLastChild, View view, ViewGroup parent) {  
     ChildInfo childInfo = (ChildInfo) getChild(groupPosition, childPosition); 
     if (view == null) { 
      LayoutInflater infalInflater = (LayoutInflater) context 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      view = infalInflater.inflate(R.layout.prisustva_detaljno_child_row, 
        null); 
     } 

     Button delete = (Button) view.findViewById(R.id.delete); 
     delete.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       RelativeLayout Rl = (RelativeLayout) v.getParent(); 
       TextView id = (TextView) Rl.findViewById(R.id.id_prisustvo); 
       PrisustvaAdapter deleteByID = new PrisustvaAdapter(context); 

       deleteByID.openToWrite(); 
       deleteByID.openToRead(); 
       deleteByID.deleteID(id .getText().toString()); 
       deleteByID.close(); 

       Toast.makeText(context, "Successfully deleted!", 
         Toast.LENGTH_LONG).show(); 
      } 
     }); 

     // ... 
     return view; 
    } 

// ... 
} 

당신은 내가 내 ExpandableListView의 모든 자식 행의 버튼을 볼 수있다. 해당 버튼을 클릭하면 데이터베이스에서 삭제 프로세스가 트리거됩니다. 어댑터 내에서 삭제 작업을해야한다는 것을 알 수 있습니다. 자식 행 내부의 버튼에 대한 클릭 이벤트 만 생성 할 수 있기 때문입니다. 데이터베이스에서 데이터를 제거 할 때 내 ExpandableListView을 어떻게 새로 고칠 수 있는지 알고 싶습니다. 어댑터 내부에서해야합니까? 그렇지 않은 경우 대체 방법은 무엇입니까?

추신 : 많은 코드가 필요한 분은 알려 주시기 바랍니다.

답변

8

나머지 코드를 보지 않고 (BaseExpandableAdapter을 인스턴스화하는 방법) 확신 할 수 없지만 onClick() 메소드 끝에 notifyDatasetChanged()을 호출하면 트릭을 수행해야합니다.

+0

이미 시도했지만 작동하지 않았습니다. 자식 행을 삭제 한 후에'notifyDatasetChanged()'를 호출하면 안됩니다. 왜냐하면 나는 목록에서가 아니라 내 데이터베이스에서만 그것을 삭제하기 때문입니다. 내가 ListView에서 일했을 때 나는'notifyDatasetChanged()'라고 불리는이 메소드'adapter.remove()'와'adapter.add()'를 가지고 있었고 매력처럼 작동했지만 나는 그것을 알 수 없다. ExpandableListView. – Aksiom

+1

어댑터가 목록이 아닌 (데이터베이스가 아닌) 목록을 기반으로하는 경우 목록에서 제거한 다음 notifyDataSetChanged()를 호출해야합니다. – znat

+2

내 목록에서 특정 항목을 제거하는 방법을 찾은 후에 관리했습니다. 그건 내 유일한 문제 였고 너무 단순했습니다. 당신의 힌트에 감사드립니다, 많이 도와 줬어. P. 나는 LinkedHashMap과 연결된 ArrayList의 ArrayList를 가졌다. Didnt는 처음에는 특정 항목을 가져 오는 방법을 알고 있습니다. 그러나 결국 그것은 간단했습니다. – Aksiom

관련 문제