J'ai une vue Recylcer horizontale qui contient une liste d'éléments. Chaque article a une vue de texte et une vue d'image pour représenter l'article (par exemple une image d'un carré et le texte "Carré" au-dessus de l'image). La vue du recycleur se trouve à l'intérieur de la disposition relative située en haut de l'écran. Ce que je dois faire est de faire glisser une image à partir de la vue recycleur et la déposer à l'extérieur dans une autre disposition qui est en dessous de celle-ci. Cependant, l'image qui est tirée de la vue recycleur ne doit pas être supprimée, mais une copie de l'image doit être placée dans la disposition extérieure. L'image doit également être supprimée à la position exacte dans la mise en page où l'utilisateur relâche son doigt. Y'a-t-il une quelconque façon de réussir cela? Un exemple de ceci pourrait être comme dans un jeu, où l'utilisateur a une liste d'objets à glisser et déposer dans le monde du jeu.Comment faire glisser et déposer une image à partir d'une vue Recycleur et placez-la à l'extérieur de celle-ci dans une autre disposition
Voici un exemple pour illustrer ce que je veux dire:
classe Adaptateur pour recycleur Vue:
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder> {
private List<ListItems> listItems;
private Context context;
public RecyclerAdapter(List<ListItems> listItems, Context context) {
this.listItems = listItems;
this.context = context;
}
@Override
public RecyclerAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.layout_recycler_view_row_one, parent, false);
ViewHolder vh = new ViewHolder(v);
return vh;
}
@Override
public void onBindViewHolder(RecyclerAdapter.ViewHolder holder, int position) {
ListItems listItems = listItems.get(position);
holder.textView.setText(listItems.getItemName());
holder.imageView.setImageResource(listItems.getImageDrawable());
}
@Override
public int getItemCount() {
return listItems.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
public ImageView imageView;
public TextView textView;
public ViewHolder(View itemView) {
super(itemView);
imageView = (ImageView) itemView.findViewById(R.id.item_image_view);
textView = (TextView) itemView.findViewById(R.id.item_name_text_view);
}
}
MainActivity.class:
public class MainActivity extends AppCompatActivity {
RelativeLayout relativeLayoutMiddle;
private RecyclerView recyclerView;
private RecyclerView.LayoutManager layoutManager;
private RecyclerView.Adapter adapter;
private List<ListItems> listItems;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listItems = new ArrayList<>();
for (int i = 0; i < 4; i++) {
if(i==0)
{
ListItems listItems = new ListItems("Square", R.drawable.square);
listItems.add(listItems);
}
else if(i==1)
{
ListItems listItems = new ListItems("Circle", R.drawable.circle);
listItems.add(listItems);
}
else if(i==2)
{
ListItems listItems = new ListItems("Rectangle", R.drawable.rectangle);
listItems.add(listItems);
}
else if(i==3)
{
ListItems listItems = new ListItems("Triangle", R.drawable.triangle);
listItems.add(listItems);
}
}
recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
recyclerView.setHasFixedSize(true);
layoutManager = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false);
recyclerView.setLayoutManager(layoutManager);
adapter = new RecyclerAdapter(listItems, this);
recyclerView.setAdapter(adapter);
relativeLayoutMiddle = (RelativeLayout) findViewById(R.id.relativeLayoutMiddle);
Je reçois une erreur lors de l'appel ViewCompat.startDragAndDrop. Impossible de résoudre la méthode. Des idées pourquoi? J'ai essayé de changer minSDKVersion mais cela ne semble pas fonctionner. –
[Vous n'utilisez probablement pas la bibliothèque compat] (https://developer.android.com/topic/libraries/support-library/packages.html#v4-compat). – adneal