私は現在、Androidプログラミングの初心者です。コードでグリッドビューを使用する際に問題が発生しています。私のコードの目的は、グリッド ビュー内でアイコンを別のアイコンと交換することです。現在、アイコンを起動してドラッグする onlongclick メソッドを実装しています。配列から取得した 1 列に 4 つのアイコンがあります。onlongclick メソッドがトリガーされると、各ビューは非表示になります。ただし、最初のアイコンに試してみると、ビューが見えなくなり、ドラッグ方法が開始されませんでした。この部分でどこが間違っていたか教えてください。ここにエラーログがあります。
08-04 22:53:50.460: E/SpannableStringBuilder(25556): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
08-04 22:53:50.460: E/SpannableStringBuilder(25556): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
08-04 22:53:51.990: E/View(25556): Unable to initiate drag
08-04 22:53:51.990: E/View(25556): java.lang.NullPointerException
08-04 22:53:51.990: E/View(25556): at android.view.View.startDrag(View.java:16249)
08-04 22:53:51.990: E/View(25556): at com.example.robotbehaviorui.CustomBehaviorActivity$MyLongClickListener.onItemLongClick(CustomBehaviorActivity.java:166)
08-04 22:53:51.990: E/View(25556): at android.widget.AbsListView.performLongPress(AbsListView.java:3143)
08-04 22:53:51.990: E/View(25556): at android.widget.AbsListView$CheckForLongPress.run(AbsListView.java:3093)
08-04 22:53:51.990: E/View(25556): at android.os.Handler.handleCallback(Handler.java:615)
08-04 22:53:51.990: E/View(25556): at android.os.Handler.dispatchMessage(Handler.java:92)
08-04 22:53:51.990: E/View(25556): at android.os.Looper.loop(Looper.java:137)
08-04 22:53:51.990: E/View(25556): at android.app.ActivityThread.main(ActivityThread.java:4898)
08-04 22:53:51.990: E/View(25556): at java.lang.reflect.Method.invokeNative(Native Method)
08-04 22:53:51.990: E/View(25556): at java.lang.reflect.Method.invoke(Method.java:511)
08-04 22:53:51.990: E/View(25556): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1008)
08-04 22:53:51.990: E/View(25556): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:775)
08-04 22:53:51.990: E/View(25556): at dalvik.system.NativeStart.main(Native Method)
そして、これが私のonlongclickリスナーです
private final class MyLongClickListener implements AdapterView.OnItemLongClickListener{
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View v,
int arg2, long arg3) {
try{
Toast.makeText(CustomBehaviorActivity.this, "OnLongClick: "+(CharSequence) v.getTag(), Toast.LENGTH_SHORT).show();
ClipData data = ClipData.newPlainText("", "");
DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(v);
v.startDrag(data, shadowBuilder, v, 0);
v.setVisibility(v.INVISIBLE);
System.out.println("INDEX: "+ conditionsPanel.indexOfChild(v));
System.out.println("SIZE: "+ conditionsList.size());
System.out.println("COUNT: "+ conditionsAdapter.getCount());
//pop up remove area
deleteView.setVisibility(deleteView.VISIBLE);
}catch(NullPointerException npe){
System.out.println("NullPointerException: "+npe.getMessage());
}catch(Exception exe){
System.out.println("NullPointerException: "+exe.getMessage());
}
return true;
}
}