crash on drag in edit mode
Opened this issue · 4 comments
I am dragging item to bottom of GridView and it crashes
Please add more details to help debug the issue: Include stack traces, code and steps to reproduce it.
Dragging in edit mode works well in sample. But its crashes when i modify the sample.
modification in sample 1. Pass Integer ArrayList to Adapter and try to set image of drawable from ArrayList . Here is stack trace error .
11-05 02:36:37.310: E/AndroidRuntime(1132): java.lang.NullPointerException
11-05 02:36:37.310: E/AndroidRuntime(1132): at android.widget.AdapterView.getPositionForView(AdapterView.java:597)
11-05 02:36:37.310: E/AndroidRuntime(1132): at org.askerov.dynamicgrid.DynamicGridView.getColumnAndRowForView(DynamicGridView.java:754)
11-05 02:36:37.310: E/AndroidRuntime(1132): at org.askerov.dynamicgrid.DynamicGridView.handleCellSwitch(DynamicGridView.java:649)
11-05 02:36:37.310: E/AndroidRuntime(1132): at org.askerov.dynamicgrid.DynamicGridView.onTouchEvent(DynamicGridView.java:429)
11-05 02:36:37.310: E/AndroidRuntime(1132): at android.view.View.dispatchTouchEvent(View.java:7127)
11-05 02:36:37.310: E/AndroidRuntime(1132): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2170)
11-05 02:36:37.310: E/AndroidRuntime(1132): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1905)
11-05 02:36:37.310: E/AndroidRuntime(1132): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2176)
11-05 02:36:37.310: E/AndroidRuntime(1132): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1919)
11-05 02:36:37.310: E/AndroidRuntime(1132): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2176)
11-05 02:36:37.310: E/AndroidRuntime(1132): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1919)
11-05 02:36:37.310: E/AndroidRuntime(1132): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2176)
Here is the modified code of GridActivity.java
public class GridActivity extends Activity {
private static final String TAG = GridActivity.class.getName();
private DynamicGridView gridView;
private ArrayList<Integer> imageIdList;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_grid);
setUpList();
gridView = (DynamicGridView) findViewById(R.id.dynamic_grid);
gridView.setWobbleInEditMode(false);
// gridView.setAdapter(new CheeseDynamicAdapter(this,new ArrayList<String>(Arrays.asList(Cheeses.sCheeseStrings)),2));
gridView.setAdapter(new CheeseDynamicAdapter(this,imageIdList,2));
// add callback to stop edit mode if needed
// gridView.setOnDropListener(new DynamicGridView.OnDropListener()
// {
// @OverRide
// public void onActionDrop()
// {
// gridView.stopEditMode();
// }
// });
gridView.setOnDragListener(new DynamicGridView.OnDragListener() {
@OverRide
public void onDragStarted(int position) {
Log.d(TAG, "drag started at position " + position);
}
@Override
public void onDragPositionsChanged(int oldPosition, int newPosition) {
Log.d(TAG, String.format("drag item position changed from %d to %d", oldPosition, newPosition));
}
});
gridView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
gridView.startEditMode(position);
return true;
}
});
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(GridActivity.this, parent.getAdapter().getItem(position).toString(),
Toast.LENGTH_SHORT).show();
}
});
}
private void setUpList() {
// TODO Auto-generated method stub
imageIdList=new ArrayList<Integer>();
imageIdList.add(R.drawable.dummy_one);
imageIdList.add(R.drawable.dummy_two);
imageIdList.add(R.drawable.dummy_three);
imageIdList.add(R.drawable.dummy_four);
imageIdList.add(R.drawable.dummy_one);
imageIdList.add(R.drawable.dummy_two);
imageIdList.add(R.drawable.dummy_three);
imageIdList.add(R.drawable.dummy_four);
imageIdList.add(R.drawable.dummy_one);
imageIdList.add(R.drawable.dummy_two);
imageIdList.add(R.drawable.dummy_three);
imageIdList.add(R.drawable.dummy_four);
imageIdList.add(R.drawable.dummy_one);
imageIdList.add(R.drawable.dummy_two);
imageIdList.add(R.drawable.dummy_three);
imageIdList.add(R.drawable.dummy_four);
}
@Override
public void onBackPressed() {
if (gridView.isEditMode()) {
gridView.stopEditMode();
} else {
super.onBackPressed();
}
}
}
And Here is the code of Adapter
public class CheeseDynamicAdapter extends BaseDynamicGridAdapter {
public CheeseDynamicAdapter(Context context, List<?> items, int columnCount) {
super(context, items, columnCount);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
CheeseViewHolder holder;
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.item_grid, null);
holder = new CheeseViewHolder(convertView);
convertView.setTag(holder);
} else {
holder = (CheeseViewHolder) convertView.getTag();
}
holder.image.setImageResource((Integer) getItem(position));
return convertView;
}
private class CheeseViewHolder {
private ImageView image;
private CheeseViewHolder(View view) {
image = (ImageView) view.findViewById(R.id.item_img);
}
}
}
I am also getting the same Null pointer exception on drag and drop till the bottom.