2016-04-12 8 views
0

androidのlistViewからアイテムを削除し、その変更を通知する必要があります。私はStackOverflowからいくつかの解決策を得ていますが、listViewからアイテムを削除してアンドロイドの変更を通知するクエリがあります。

このコードの部分は、DAOクラスからリストビューと関数をどのように初期化したかを示しています。

listvcard=(ListView) rootView.findViewById(R.id.listofvcard); 

     DAO dao = new DAO(getActivity()); 

     vcardadapter adapter = new vcardadapter(getActivity(), dao.getUser()); 

     listvcard.setAdapter(adapter); 

     return rootView; 
    } 

    private class vcardadapter extends BaseAdapter { 

     private Context context; 
     private List<VcardVO> listvcardVO; 


     private LayoutInflater inflater; 

     public vcardadapter(Context c, List<VcardVO> list) { 
      // TODO Auto-generated constructor stub 
      this.context = c; 
      this.listvcardVO = list; 
      inflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     } 

=========================================== =================

このコードの部分は、listViewからItemを削除する方法を示していますALERTレイアウト。

h.delete.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        deletepopup(); 
       } 
       private void deletepopup() { 
        // TODO Auto-generated method stub 
        AlertDialog.Builder alert = new AlertDialog.Builder(getActivity()); 
        alert.setTitle("Delete this vCard?"); 

        alert.setCancelable(false); 
        //alert.setIcon(R.drawable.vcardicon2); 
        alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 

         @Override 
         public void onClick(DialogInterface dialog, int which) { 
          // TODO Auto-generated method stub 

         } 
        }); 
        alert.setPositiveButton("Delete", new DialogInterface.OnClickListener() { 

         @Override 
         public void onClick(DialogInterface dialog, int which) { 
          // TODO Auto-generated method stub 


          ArrayAdapter<String> myAdapter = (ArrayAdapter<String>)listvcard.getAdapter(); 
          myAdapter.remove(myAdapter.getItem(position)); 
          myAdapter.notifyDataSetChanged(); 



         } 
        }); 
        AlertDialog dialog = alert.create(); 
        dialog.show(); 
       } 
      }); 

私はライン"ArrayAdapter<String> myAdapter = (ArrayAdapter<String>)listvcard.getAdapter();"

でエラーを取得していますこれは、返信してください

を "vcardadapterがarrayadapterにキャストすることはできない" と言います!私はこの問題を3日間から解決しようとしています。

答えて

0

は下記のアダプタでリストビューから項目を削除する方法の追加、これを試してみてください。

public removeItem(int position){ 
     listvcardVO.remove(position); 
     notifyDataSetChanged(); 
} 

をし、[削除]ボタンをクリックしてからメソッドを呼び出します。

adapter.removeItem(postion); 
+0

「アダプタ」上記で宣言したものは、削除ボタンのonClickListenerにはアクセスできません。 メソッド「removeItem」を作成しました –

+0

グローバルに宣言します –

+0

どのようにグローバルに宣言できますかpublic宣言すると「エラー」と表示されます。 –

関連する問題