2016-11-23 10 views
1

私はカスタムスライダからドラッグアンドドロップしようとしています。 スライダはviewPagerにあり、Imageviewsを表示します。 私は私のlongClickListenerに設定する必要がある魔法使いのIDを知らない。カスタムスライダからドラッグ&ドロップできない

私はImagview(swip_image_view)を試しましたが、nullを返します。 &ビューページでは機能しません。

なぜ私のlongClickListenerは機能しませんか?

public class Activity_Kind extends Activity { 

    ViewPager viewPager; 
    CustomHorizontalSwip customHorizontalSwip; 
    private GridView gridDieren; 
    private ImageView bus; 
    private ImageView slider; 
    private TextView text; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_kies_dier); 

     gridDieren = (GridView) findViewById(R.id.gridSelectDieren); 
     text = (TextView) findViewById(R.id.kiesdiertext); 
     bus = (ImageView) findViewById(R.id.imageBus); 

     viewPager = (ViewPager) findViewById(R.id.viewPager); 
     customHorizontalSwip = new CustomHorizontalSwip(this); 
     viewPager.setAdapter(customHorizontalSwip); 

     viewPager.setLongClickable(true); 
     viewPager.setOnLongClickListener(longClickListener); 

     //slider = (ImageView) findViewById(R.id.swip_image_view); 
     //slider.setOnLongClickListener(longClickListener); 

     bus.setOnDragListener(dragListener); 
    } 

    View.OnLongClickListener longClickListener = new View.OnLongClickListener() { 

     @Override 
     public boolean onLongClick(View v) { 
      ClipData data = ClipData.newPlainText("", ""); 
      View.DragShadowBuilder myShadowBuilder = new View.DragShadowBuilder(v); 
      v.startDrag(data, myShadowBuilder, v, 0); 
      return true; 
     } 
    }; 

    View.OnDragListener dragListener = new View.OnDragListener() { 

     @Override 
     public boolean onDrag(View v, DragEvent event) { 
      int dragEvent = event.getAction(); 

      switch (dragEvent) { 
       case DragEvent.ACTION_DRAG_ENTERED: 
        final View view = (View) event.getLocalState(); //Krijgt alle informatie van die view die wordt gedraged 
        if (view.getId() == R.id.imageBus); 
        text.setText("Werkt"); 
        //gridDieren.addView(view); 
         break; 
       case DragEvent.ACTION_DRAG_ENDED: 
        break; 
       case DragEvent.ACTION_DROP: 
        break; 
      } 
      return true; 
     } 
    }; 
} 


public class CustomHorizontalSwip extends PagerAdapter { 
    private int [] imageResources ={R.drawable.beer,R.drawable.bever, R.drawable.kip, R.drawable.leeuw, R.drawable.nijlpaard, R.drawable.poes 
      ,R.drawable.ezel,R.drawable.hond, R.drawable.ooievaar, R.drawable.varken, R.drawable.wormpje}; 
    private Context ctx; 
    private LayoutInflater layoutInflater; 

    public CustomHorizontalSwip(Context c) { 
     ctx=c; 
    } 

    @Override 
    public int getCount() { 

     return imageResources.length; 
    } 

    @Override 
    public Object instantiateItem(ViewGroup container, int position) { 
     layoutInflater= (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View itemView=layoutInflater.inflate(R.layout.custom_swipe_dieren,container,false); 
     ImageView imageView=(ImageView) itemView.findViewById(R.id.swip_image_view); 
     imageView.setImageResource(imageResources[position]); 
     container.addView(itemView); 
     return itemView; 
    } 

    @Override 
    public void destroyItem(ViewGroup container, int position, Object object) { 

    } 

    @Override 
    public boolean isViewFromObject(View view, Object object) { 

     return (view==object); 
    } 
} 

答えて

0

あなたのイメージswip_image_viewは、レイアウトcustom_swipe_dieren.xmlの内側にあります。あなたはonLongClickListenerこのような方法CustomHorizontalSwip -> instantiateItem()の内側を設定する必要があります。

public class CustomHorizontalSwip extends PagerAdapter { 

    @Override 
    public Object instantiateItem(ViewGroup container, int position) { 
     layoutInflater= (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View itemView=layoutInflater.inflate(R.layout.custom_swipe_dieren,container,false); 
     ImageView imageView=(ImageView) itemView.findViewById(R.id.swip_image_view); 
     imageView.setImageResource(imageResources[position]); 
     imageView.setOnLongClickListener(longClickListener); 
     container.addView(itemView); 
     return itemView; 
    } 

    /* Declare and Initialise longClickListener in this file also */ 

    /* Also do same for dragListener in this file */ 

} 

これは

おかげで、あなたのために動作します

+0

が答えてくれてありがとう!それは今完璧に動作します! –

関連する問題