2012-02-06 146 views
3

我使用以下来填充我的列表视图,不想显示项目,如果我点击btn_Delete,我成功地从hasValues中删除项目,但它显示我在列表视图中的空白项目,
我想删除此空白列表视图项目来自List。
如果任何机构知道如何做到这一点,请回复。
谢谢,如何从listview跳过一个视图?

private class MyArrayAdapter extends ArrayAdapter 
    { 
     private List<HashMap<String, String>> myData = new ArrayList<HashMap<String, String>>(); 

     public MyArrayAdapter(Context context, int textViewResourceId, List<HashMap<String, String>> objects) 
     { 
      super(context, textViewResourceId, objects); 
      context = getContext(); 
      myData = objects; 
     } 

     @Override 
     public View getView(final int position, View convertView, ViewGroup parent) 
     { 
      View v = convertView; 
      try 
      { 
       if(v == null) 
       { 
        LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
        v = inflater.inflate(R.layout.listSomeThing, null); 
       } 
       if(hasValues != null && !hasValues.get(DatabaseConstant.key_STATUS).equals("D")) 
       { 
        btn_Delete.setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View v) 
         { 
          // delete item from HasValues.. 
         } 
       } 
else 
{ 
    v.setVisibility(View.GONE); 
}    
      } 
      catch (Exception e) 
      { 
       Utility.saveExceptionDetails(LogsDetails.this, e); 
       e.printStackTrace(); 
      } 

      return v; 
     } 
    } 
+0

我认为这不是最好的解决方案。只需设置您的具体条件并在getView中增加您的位置编号即可。 – Setmax 2015-11-04 10:44:18

回答

6

你需要从你的阵列myData,比您的ListView适配器电话notifyDataSetChanged将其删除。
否则getView将被调用,并且列表项将被填充,如果有hasValues或没有,因为视图将被返回。 (不要试图返回null,它不会工作)。

0

您可以创建方法从列表中删除项目,然后通知适配器数据已更改。

btn_Delete.setOnClickListener(new View.OnClickListener() 
{ 
    @Override 
    public void onClick(View v) 
    { 
    deleteItemAtId(position); 
    } 
}; 

,然后创建这个方法:

void deleteItemAtId(int id) 
{ 
    myData.remove(id); 
    // This ensure that getView is called again 
    notifyDataSetChanged(); 
} 
0

从自定义视图中的活动列表中删除元素和存储一些临时列表和临时列表传递给您的自定义适配器。您无法在自定义适配器中执行任何操作。