アイテムのリストを保持する水平Recylcerビューがあります。各アイテムは、アイテムを表すためのテキストビューおよびイメージビュー(例えば、画像の上の正方形およびテキスト「正方形」の画像)を有する。レシラの表示は、自分自身の 相対レイアウトが画面の上部に配置されている内部です。私がする必要があるのは、リサイクラービューからイメージをドラッグして、そのイメージの外側にある別のレイアウトにドロップすることです。ただし、リサイクラビューからドラッグしたイメージは削除しないでください。代わりに、イメージのコピーを外部レイアウトに配置する必要があります。また、ユーザーが指を離したレイアウト内の正確な位置に画像をドロップする必要があります。これを達成する方法はありますか?イメージをRecyclerビューからドラッグアンドドロップして、そのイメージを別のレイアウトに配置する方法
この例は、ユーザーがゲームの世界にドラッグアンドドロップするオブジェクトのリストを持つゲームのようなものです。ここで
は、私が何を意味するか説明する例を示しますリサイクラービューの
アダプタクラス:
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);
ViewCompat.startDragAndDropを呼び出すときに、私はエラーを取得しています。メソッドを解決できません。なぜどんなアイデア?私はminSDKVersionを変更しようとしましたが、うまくいかないようです。 –
[あなたはおそらくcompat libを使用していません](https://developer.android.com/topic/libraries/support-library/packages.html#v4-compat)。 – adneal