में ड्रैग और ड्रॉप करता हूं तो मैंने ड्रैग व्यू ड्रैग और ड्रॉप किया। पहली ड्रैग और ड्रॉप को छोड़कर सब कुछ पूरी तरह से काम करता है। मुझे कारण नहीं मिल रहा है कि यह पहली बार क्यों खुश होता है।गायब ImageView स्रोत पहली बार जब मैं अपने ग्रिड व्यू
पहली बार जब मैं ग्रिडव्यू में अन्य वस्तुओं पर एक आइटम खींचता हूं, तो आइटम के इमेजव्यू स्रोत खो जाते हैं। जब मैं इसे छोड़ देता हूं तो स्रोत तय किए जाएंगे .. उसके बाद हर चीज सामान्य काम करेगी। कोई विचार है कि मैं इसे कैसे या अजीब व्यवहार के कारण को ठीक कर सकता हूं। हर मदद का स्वागत है।
mGridView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
GridView parent = (GridView) v;
int x = (int) event.getX();
int y = (int) event.getY();
int position = parent.pointToPosition(x, y);
if (position > AdapterView.INVALID_POSITION) {
int count = parent.getChildCount();
for (int i = 0; i < count; i++) {
View curr = parent.getChildAt(i);
curr.setOnDragListener(new View.OnDragListener() {
@Override
public boolean onDrag(View v, DragEvent event) {
boolean result = true;
int action = event.getAction();
switch (action) {
case DragEvent.ACTION_DRAG_STARTED:
break;
case DragEvent.ACTION_DRAG_LOCATION:
break;
case DragEvent.ACTION_DRAG_ENTERED:
setBlueFilterOnImageView((ImageView) v, getActivity());
break;
case DragEvent.ACTION_DRAG_EXITED:
clearColorFilterOnImageView((ImageView) v);
break;
case DragEvent.ACTION_DROP:
if (event.getLocalState() == v) {
result = false;
} else {
View droped = (View) event.getLocalState();
View target = v;
app.myProfile().removeProfilePhotoAtIndex(((DragGridItemHolder) droped.getTag()).position);
app.myProfile().insertProfilePhoto(((DragGridItemHolder) droped.getTag()).id, ((DragGridItemHolder) target.getTag()).position);
mAdapter.notifyDataSetChanged();
}
break;
case DragEvent.ACTION_DRAG_ENDED:
clearColorFilterOnImageView((ImageView) v);
break;
default:
result = false;
break;
}
return result;
}
});
}
int relativePosition = position - parent.getFirstVisiblePosition();
View target = (View) parent.getChildAt(relativePosition);
DragGridItemHolder holder = (DragGridItemHolder) target.getTag();
String text = holder.id;
ClipData data = ClipData.newPlainText("DragData", text);
target.startDrag(data, new View.DragShadowBuilder(target), target, 0);
}
}
return false;
}
});
संपादित
public static void setBlueFilterOnImageView(ImageView imageView, Context context){
PorterDuffColorFilter blueFilter = new PorterDuffColorFilter(
context.getResources().getColor(R.color.grid_state_focused),
PorterDuff.Mode.SRC_ATOP);
imageView.setColorFilter(blueFilter);
imageView.setBackgroundColor(context.getResources().getColor(
R.color.grid_state_pressed));
}
इन दो कथनों से आपका क्या मतलब है: "आइटम के छविदृश्य स्रोत खो गए हैं" और "जब मैं इसे छोड़ देता हूं तो स्रोत होंगे निश्चित " –
विचार छविदृश्य हैं। जब मैं किसी अन्य छविदृश्य पर एक छविदृश्य खींचता हूं, तो वे छविदृश्य वहां चित्र दिखाना बंद कर देंगे (छवि जिसे मैंने छविदृश्य के स्रोत के रूप में सेट किया है)। जैसे ही मैं छविदृश्य छोड़ दूंगा, ग्रिडव्यू एडाप्टर पर सूचित करेंडेटाट चेंज() को कॉल किया जाएगा और सभी चित्र दोबारा दिखाए जाएंगे। उसके बाद सब कुछ सामान्य काम करता है और चित्र गायब नहीं होते हैं। मेरी खराब इंग्लिश के लिए माफ़ कीजिये। – Luciano
आप 'setBlueFilterOnImageView' में क्या कर रहे हैं? – Luksprog