2012-02-06 5 views
3

btn_Deleteをクリックしてアイテムを表示したくない場合、リストビューに空白のアイテムが表示されます。
この空のリストビューアイテムを削除したいリストから。
どのように身体がこれを行うのか分かっている場合は、返信してください。
おかげで、listviewから1つのビューをスキップする方法は?

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

答えて

6

あなたのアレイmyDataから、あなたのListViewアダプタにnotifyDataSetChangedを呼び出すよりも、それを削除する必要があります。
それ以外の場合は、hasValuesがある場合は、getViewが呼び出され、リスト項目が移入されます。ビューが返されるためです。 (代わりに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

は、カスタムビュー・アクティビティのリストから要素を削除し、いくつかの一時リストにそれを保存し、カスタムアダプタにその一時リストを通過します。カスタムアダプターでは何もできません。

関連する問題