2012-02-06 134 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

從自定義視圖中的活動列表中刪除元素和存儲一些臨時列表和臨時列表傳遞給您的自定義適配器。您無法在自定義適配器中執行任何操作。