Androidでリストビューを使い、removeに指定した文字列の行を削除したいです。 リストビューで削除したい行をタップして、タップした行から文字列は取得できましたが、removeの処理で 次のエラーが出ます。 05-17 16:27:42.242: E/AndroidRuntime(31874): java.lang.NullPointerException 05-17 16:27:42.242: E/AndroidRuntime(31874): at (パッケージ名).MainActivity1.removeItem(MainActivity1.java:982) 調べたところremoveはArrayListクラスで用意されている"remove"メソッドを使うようなので、 次のように記述しておくとエラーにならず、タップ行を削除できます。 adapter = new ArrayAdapter(getApplicationContext(), android.R.layout.simple_list_item_1); しかし、自分が作りたいものはリスト行をタップすると訂正線が入り、リスト行を長押しするとタップ行が削除される ものなので、次のように記述した為、removeでエラーが発生します。 mContext = this; mList = new ArrayList- (); final MyListAdapter adapter = new MyListAdapter(mContext, R.layout.list_row, mList); final ListView listView = (ListView) findViewById(R.id.listView1); listView.setAdapter(adapter); ちなみにMyListAdapterは次のようになってます。 public class MyListAdapter extends ArrayAdapter
- { private ArrayList
- mItems; private LayoutInflater mInflater; private String tapdata; public MyListAdapter(Context context, int textViewResourceId, List
- list) { super(context, textViewResourceId, list); this.mItems = (ArrayList
- ) list; this.mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } @Override public View getView(int position, View convertView, ViewGroup parent) { View view = convertView; if(view == null) { view = mInflater.inflate(R.layout.list_row, null); } Item item = mItems.get(position); if (item != null) { TextView textView = (TextView)view.findViewById(R.id.text); textView.setText(item.getText().toString()); Log.d("TAG",item.getText().toString()); // 取り消し線を引くために TextPaintを取得 TextPaint paint = textView.getPaint(); if (item.isLineThrough()) { // 取り消し線を引く paint.setFlags(textView.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG); // アンチエイリアスをオンにする paint.setAntiAlias(true); } else { // 取り消し線を消す paint.setFlags(textView.getPaintFlags() & (~ Paint.STRIKE_THRU_TEXT_FLAG)); } } tapdata = item.getText().toString(); return view ; } public String getData() { return tapdata; } } removeしているのはMainActivity1というクラスの次の部分で、selectedItemにリスト行から取得した文字列が入ってます。 (1)の部分でエラーになります。 protected void removeItem(String selectedItem) { Log.d(DEBUG, "doPositiveClick() - item : " + selectedItem); Log.d("TAG0",selectedItem); adapter.remove(selectedItem);(1) } ちなみに、タップした行に訂正線がひかれるようにするために参考にしたサイトは次のサイトです。 http://blog.inara.jp/2011/11/androidtextviewtextview.html 自分の考えでは、MainActivity1のクラスでArrayListを記述せず、MyListAdapterクラスを記述しているから、removeメソッドを呼べないのだと思ってます。 しかし、全く分かりません。 解決策はあるでしょうか? 宜しくお願いします。 Android os:3.0~4.4 pc:windows 7
↧