嗨,我想要使用拖放在我的ListView
为此,我发现Nhaarman代码为简单的拖放ListView
。但是,当我使用它我收到此错误信息:使用nhaarman拖放Listview在Android中使用nhaarman
java.lang.NullPointerException
at android.widget.AdapterView.getPositionForView(AdapterView.java:591)
at com.nhaarman.listviewanimations.itemmanipulation.dragdrop.DynamicListViewWrapper.getPositionForView(DynamicListViewWrapper.java:59)
at com.nhaarman.listviewanimations.itemmanipulation.dragdrop.DragAndDropHandler.switchViews(DragAndDropHandler.java:431)
at com.nhaarman.listviewanimations.itemmanipulation.dragdrop.DragAndDropHandler.switchIfNecessary(DragAndDropHandler.java:408)
at com.nhaarman.listviewanimations.itemmanipulation.dragdrop.DragAndDropHandler.handleMoveEvent(DragAndDropHandler.java:381)
at com.nhaarman.listviewanimations.itemmanipulation.dragdrop.DragAndDropHandler.onTouchEvent(DragAndDropHandler.java:278)
at com.nhaarman.listviewanimations.itemmanipulation.DynamicListView.onTouchEvent(DynamicListView.java:279)
at com.nhaarman.listviewanimations.itemmanipulation.DynamicListView.dispatchTouchEvent(DynamicListView.java:272)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2070)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1746)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2070)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1746)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2070)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1746)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2070)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1746)
at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1961)
at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1398)
at android.app.Activity.dispatchTouchEvent(Activity.java:2428)
at android.support.v7.app.ActionBarActivityDelegateICS$WindowCallbackWrapper.dispatchTouchEvent(ActionBarActivityDelegateICS.java:255)
at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1909)
at android.view.View.dispatchPointerEvent(View.java:5748)
at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3165)
at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2719)
at android.view.ViewRootImpl.processInputEvents(ViewRootImpl.java:951)
at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2733)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:156)
at android.app.ActivityThread.main(ActivityThread.java:4987)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)
我不知道究竟是我的问题,但我认为getitem
和getitemid
方法有问题。
我的代码是:
pagelist=(DynamicListView) findViewById(R.id.listpages);
PagesListAdapter adapter=new PagesListAdapter(getApplicationContext());
AlphaInAnimationAdapter animationAdapter=new AlphaInAnimationAdapter(adapter);
animationAdapter.setAbsListView(pagelist);
pagelist.setAdapter(animationAdapter);
pagelist.enableDragAndDrop();
pagelist.setDraggableManager(new TouchViewDraggableManager(R.id.list_row_draganddrop_touchview));
pagelist.setOnItemMovedListener(new MyOnItemMovedListener(adapter));
pagelist.setOnItemLongClickListener(new MyOnItemLongClickListener(pagelist));
而且我的适配器是:
public class PagesListAdapter extends BaseAdapter implements Swappable {
Context context;
HashMap<String, Integer> mIdMap = new HashMap<String, Integer>();
public PagesListAdapter(Context context){
this.context=context;
for(int s=0;s<MainActivity.names.size();s++){
mIdMap.put(MainActivity.names.get(s).get(0).name,s);
}
}
@Override
public int getCount() {
return MainActivity.names.size();
}
@Override
public Object getItem(int position) {
return MainActivity.names.get(position).get(0).name;
}
@Override
public long getItemId(final int position) {
return getItem(position).hashCode();
}
@Override
public boolean hasStableIds() {
return true;
}
LayoutInflater inflater;
@Override
public View getView(int position, View convertView, ViewGroup parent) {
inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView=inflater.inflate(R.layout.item_pageslist,parent,false);
TextView pagename=(TextView) convertView.findViewById(R.id.pagename);
pagename.setText(MainActivity.allapps.get(position).get(0).name);
return convertView;
}
@Override
public void swapItems(int i, int i2) {
}
}
谁能说我失踪了?感谢您的任何帮助
我有同样的问题 – 2015-05-19 09:39:19