2013-03-12 58 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?我必须从适配器内部完成吗?如果不是,还有什么替代方案?

P.S:如果你们需要更多的代码,请让我知道。

回答

8

我无法确定没有看到代码的其余部分(如何实例化您的BaseExpandableAdapter),但在onClick()方法的末尾调用notifyDatasetChanged()应该有所斩断。

+0

我试过了,但没有奏效。在我删除子行后,不应该调用notifyDatasetChanged()'。因为我只是从我的数据库中删除它,而不是从列表中删除它。当我使用ListView时,我有这个方法'adapter.remove()'和'adapter.add()',之后我调用了'notifyDatasetChanged()',它像一个魅力一样工作,但我无法弄清楚ExpandableListView。 – Aksiom 2013-03-12 01:14:49

+1

如果您的适配器基于列表(而不是基于数据库),则必须将其从列表中删除,然后调用notifyDataSetChanged()。 – znat 2013-03-12 01:21:33

+2

我在找到如何从列表中删除特定项目后进行管理。这是我唯一的问题,而且非常简单。谢谢你的提示,帮了我很多。 P.S.我有一个与LinkedHashMap链接的ArrayList的ArrayList。起初不知道如何从那里获取特定物品。但最后它很简单。 – Aksiom 2013-03-12 01:33:03

相关问题