0

コンテンツを含むリストビューを作成し、各行に削除ボタンを使用しました。ここで、削除ボタンを使用してリストビューから項目を削除しようとしました。リストビューの最後の要素を削除しているときに、ArrayIndexOutOfBound 例外がスローされます。

私はググって、次のようないくつかの解決策を見つけました。

@Override
    public int getCount() {

        return lsit.size();
    }

Adapter.notifyDataSetChanged();

しかし、どのソリューションも私の問題を解決しません。

これが私のコードです:

public View getView( final int position, View convertView,final ViewGroup parent) {
        final ViewHolder holder;
        System.out.println("saved homes list..");
        System.out.println("Position: "+m_itemClickedPosition_savedHomes);
        if (convertView == null) {
            convertView = mInflater.inflate(R.layout.nearbyhomestext, null);
            holder = new ViewHolder();

            holder.homeTitle = (TextView) convertView.findViewById(R.id.text_title);
            holder.homePlan = (TextView) convertView.findViewById(R.id.text_plan);
            holder.deleteButton = (Button) convertView.findViewById(R.id.delete_btn);


            holder.activeDrawable = getActivity().getResources().getDrawable(R.drawable.gradient_bg_hover);
            holder.inActiveDrawable = getActivity().getResources().getDrawable(R.drawable.gradient_bg);
            holder.deleteButton.setTag(position);
            //holder.deleteButton.setVisibility(View.INVISIBLE);
            holder.deleteButton.setOnClickListener(
                    new Button.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            System.out.println("Clicked position:"+position);
                            System.out.println("ArraySize:"+m_savedHomesList.size());
                          //Integer index = (Integer) v.getTag();
                              m_savedHomesList.remove(position); 
                              m_savedHomesAdapter.notifyDataSetChanged();
                        }
                    }
                );
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }   


        return convertView;
    }

LogCatError:

    07-25 14:25:56.187: E/AndroidRuntime(5152): FATAL EXCEPTION: main
07-25 14:25:56.187: E/AndroidRuntime(5152): java.lang.IndexOutOfBoundsException: Invalid index 1, size is 1
07-25 14:25:56.187: E/AndroidRuntime(5152):     at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:257)
07-25 14:25:56.187: E/AndroidRuntime(5152):     at java.util.ArrayList.remove(ArrayList.java:406)
07-25 14:25:56.187: E/AndroidRuntime(5152):     at com.cpt.realtor.tablet.fragments.HomeListFragment$SavedHomeBaseAdapter$1.onClick(HomeListFragment.java:399)
07-25 14:25:56.187: E/AndroidRuntime(5152):     at android.view.View.performClick(View.java:2485)
07-25 14:25:56.187: E/AndroidRuntime(5152):     at android.view.View$PerformClick.run(View.java:9080)
07-25 14:25:56.187: E/AndroidRuntime(5152):     at android.os.Handler.handleCallback(Handler.java:587)
07-25 14:25:56.187: E/AndroidRuntime(5152):     at android.os.Handler.dispatchMessage(Handler.java:92)
07-25 14:25:56.187: E/AndroidRuntime(5152):     at android.os.Looper.loop(Looper.java:123)
07-25 14:25:56.187: E/AndroidRuntime(5152):     at android.app.ActivityThread.main(ActivityThread.java:3687)
07-25 14:25:56.187: E/AndroidRuntime(5152):     at java.lang.reflect.Method.invokeNative(Native Method)
07-25 14:25:56.187: E/AndroidRuntime(5152):     at java.lang.reflect.Method.invoke(Method.java:507)
07-25 14:25:56.187: E/AndroidRuntime(5152):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
07-25 14:25:56.187: E/AndroidRuntime(5152):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
07-25 14:25:56.187: E/AndroidRuntime(5152):     at dalvik.system.NativeStart.main(Native Method)

これを解決するには助けが必要..

前もって感謝します..

4

3 に答える 3

0

試す

public int getCount() {
    return m_savedHomesList.size();
}

getView(..) 関数で m_savedHomesList から削除しています。したがって、アダプタは m_savedHomesList に基づいている必要があります。getView メソッドでも、使用するだけです

notifyDataSetChanged();

m_savedHomesAdapter.notifyDataSetChanged() の代わりに;

于 2013-07-25T09:43:34.937 に答える