日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android跨屏拖动item,android中如何实现两个listview中的item可以互相拖拽移位?

發布時間:2023/12/19 Android 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android跨屏拖动item,android中如何实现两个listview中的item可以互相拖拽移位? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這兩天自己baidu+google,簡單解決了一些問題,暫且先貼上來。

因為是我的一個作業,所以還有一些按鈕的點擊事件,大家可以忽略。

這些源碼僅僅實現了簡單的”將制定控件拖拽到某個區域“,還沒有實現”拖拽到指定位置“,后續解決了之后會在貼上來

package com.example.alpha.app2_4;

import android.app.Activity;

import android.content.ClipData;

import android.content.ClipDescription;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.Point;

import android.graphics.drawable.ColorDrawable;

import android.graphics.drawable.Drawable;

import android.os.Bundle;

import android.util.Log;

import android.view.DragEvent;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.AdapterView;

import android.widget.AdapterView.OnItemClickListener;

import android.widget.ArrayAdapter;

import android.widget.Button;

import android.widget.LinearLayout;

import android.widget.ListView;

import android.widget.Toast;

import java.util.ArrayList;

import java.util.Arrays;

public class MainActivity extends Activity implements OnClickListener {

ListView lv1;

ListView lv2;

LinearLayout targetLayout,fromLayout;

ArrayAdapter arr_Adapter;

ArrayAdapterarr_Adapter2;

Button bt1;

Button bt2;

Button bt3;

Button bt4;

Button bt5;

Button bt6;

static int po_l = 0,po_r=0;

ArrayListarr_data1=new ArrayList(Arrays.asList("上海",

"南京", "武漢", "北京", "重慶", "深圳", "蘭州", "沈陽") );

ArrayList arr_data2;

static Boolean flag=true;//定義左右標志

static int longClick_Flag;//定義長按左右標志

//實例化拖拽項目監聽器

MyDragEventListener myDragEventListener=new MyDragEventListener();

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

bt1 = (Button) findViewById(R.id.button1);

bt2 = (Button) findViewById(R.id.button2);

bt3 = (Button) findViewById(R.id.button3);

bt4 = (Button) findViewById(R.id.button4);

bt5 = (Button) findViewById(R.id.button5);

bt6 = (Button) findViewById(R.id.button6);

lv1 = (ListView) findViewById(R.id.listView1);

lv2 = (ListView) findViewById(R.id.listView2);

bt1.setOnClickListener(this);

bt2.setOnClickListener(this);

bt3.setOnClickListener(this);

bt4.setOnClickListener(this);

bt5.setOnClickListener(this);

bt6.setOnClickListener(this);

arr_Adapter = new ArrayAdapter(this,

android.R.layout.simple_list_item_1, arr_data1);

lv1.setAdapter(arr_Adapter);

lv1.setOnItemClickListener(new OnItemClickListener() {

@Override

public void onItemClick(AdapterView> parent, View view,

int position, long id) {

po_l=position;

flag=true;//true即點擊了lv1

Log.d("tag", "po_l="+po_l);

}

});

arr_data2=new ArrayList();

arr_Adapter2=new ArrayAdapter(this, android.R.layout.simple_list_item_1,arr_data2);

lv2.setAdapter(arr_Adapter2);

lv2.setOnItemClickListener(new OnItemClickListener() {

@Override

public void onItemClick(AdapterView> parent, View view, int position, long id) {

po_r=position;

flag=false;//false即點擊了lv2

}

});

/**

* Drag_Start

*/

targetLayout= (LinearLayout) findViewById(R.id.TargetLayout);

fromLayout= (LinearLayout) findViewById(R.id.FromLayout);

lv1.setOnItemLongClickListener(lv1LongClickListener);

lv2.setOnItemLongClickListener(lv2LongClickListener);

lv1.setOnDragListener(myDragEventListener);

targetLayout.setOnDragListener(myDragEventListener);

fromLayout.setOnDragListener(myDragEventListener);

lv2.setOnDragListener(myDragEventListener);

}

@Override

public void onClick(View v) {

switch (v.getId()) {

//左移

case R.id.button1:

if (lv2.getChildCount()>=po_r+1) {

String cu=(String)lv2.getItemAtPosition(po_r);

Log.d("tag", "count="+lv2.getChildCount()+"po_l"+po_r);

arr_data2.remove(po_r);

arr_data1.add(cu);

arr_Adapter.notifyDataSetChanged();

}

else {

Toast.makeText(MainActivity.this,"當前位置已無內容",Toast.LENGTH_SHORT).show();

}

arr_Adapter2.notifyDataSetChanged();

break;

//右移

case R.id.button2:

if (lv1.getChildCount()>=po_l+1) {

String cu=(String)lv1.getItemAtPosition(po_l);

Log.d("tag", "count="+lv1.getChildCount()+"po_l"+po_l);

arr_data1.remove(po_l);

arr_data2.add(cu);

arr_Adapter2.notifyDataSetChanged();

}

else {

Toast.makeText(MainActivity.this,"當前位置已無內容",Toast.LENGTH_SHORT).show();

}

arr_Adapter.notifyDataSetChanged();

break;

//全部左移

case R.id.button3:

arr_data1.addAll(arr_data2);

arr_data2.clear();

arr_Adapter.notifyDataSetChanged();

arr_Adapter2.notifyDataSetChanged();

break;

//全部右移

case R.id.button4:

arr_data2.addAll(arr_data1);

arr_data1.clear();

arr_Adapter.notifyDataSetChanged();

arr_Adapter2.notifyDataSetChanged();

break;

//上移

case R.id.button5:

if(flag&&po_l>0){

String ch=arr_data1.get(po_l);

arr_data1.remove(po_l);

arr_data1.add(po_l-1,ch);

arr_Adapter.notifyDataSetChanged();

po_l--;

}

else if(!flag&&po_r>0){

String ch=arr_data2.get(po_r);

arr_data2.remove(po_r);

arr_data2.add(po_r-1,ch);

arr_Adapter2.notifyDataSetChanged();

po_r--;

}

break;

//下移

case R.id.button6:

if(flag&&po_l

String ch=arr_data1.get(po_l);

arr_data1.remove(po_l);

arr_data1.add(po_l+1,ch);

arr_Adapter.notifyDataSetChanged();

po_l++;

}

else if(!flag&&po_r

String ch=arr_data2.get(po_r);

arr_data2.remove(po_r);

arr_data2.add(po_r+1,ch);

arr_Adapter2.notifyDataSetChanged();

po_r++;

}

break;

default:

break;

}

}

/**

* DragStart_to_End

*/

//listView1長按事件

AdapterView.OnItemLongClickListener lv1LongClickListener=new AdapterView.OnItemLongClickListener() {

@Override

public boolean onItemLongClick(AdapterView> parent, View view, int position, long id) {

longClick_Flag=1;

//po_l=position;

// 將被拖動item傳遞到clipData

ClipData.Item item=new ClipData.Item(arr_data1.get(position));

String[] clipDescription={ClipDescription.MIMETYPE_TEXT_PLAIN};

ClipData dragData=new ClipData((CharSequence) view.getTag(),clipDescription,item);

//制造拖動影像

View.DragShadowBuilder myShadow=new MyDragShadowBuilder(view);

view.startDrag(dragData,myShadow,arr_data1.get(position),0);

return true;

}

};

//listView2長按事件

AdapterView.OnItemLongClickListener lv2LongClickListener=new AdapterView.OnItemLongClickListener() {

@Override

public boolean onItemLongClick(AdapterView> parent, View view, int position, long id) {

longClick_Flag=2;

//po_r=position;

// 將被拖動item傳遞到clipData

ClipData.Item item=new ClipData.Item(arr_data2.get(position));

String[] clipDescription={ClipDescription.MIMETYPE_TEXT_PLAIN};

ClipData dragData=new ClipData((CharSequence) view.getTag(),clipDescription,item);

//制造拖動影像

View.DragShadowBuilder myShadow=new MyDragShadowBuilder(view);

view.startDrag(dragData,myShadow,arr_data2.get(position),0);

return true;

}

};

//監聽拖拽事件和狀態

protected class MyDragEventListener implements View.OnDragListener{

@Override

public boolean onDrag(View v, DragEvent event) {//v代表目標視圖

//定義拖拽狀態

final int action=event.getAction();

switch (action){

//鼠標長按下開始拖動

case DragEvent.ACTION_DRAG_STARTED:

// All involved view accept ACTION_DRAG_STARTED for

// MIMETYPE_TEXT_PLAIN

if (event.getClipDescription().hasMimeType(

ClipDescription.MIMETYPE_TEXT_PLAIN)) {

return true; // Accept

} else {

return false; // reject

}

case DragEvent.ACTION_DRAG_ENTERED:

return true;

case DragEvent.ACTION_DRAG_LOCATION:

return true;

case DragEvent.ACTION_DRAG_EXITED:

return true;

case DragEvent.ACTION_DROP:

// Gets the item containing the dragged data

//獲取被拖動的item

ClipData.Item item = event.getClipData().getItemAt(0);

// If apply only if drop on buttonTarget

//由左向右拖動

if (v == targetLayout||v==lv2) {

String droppedItem = item.getText().toString();

arr_data2.add(droppedItem);

arr_Adapter2.notifyDataSetChanged();

arr_data1.remove(droppedItem);

arr_Adapter.notifyDataSetChanged();

return true;

}

//由右向左拖動

if (v == fromLayout||v==lv1) {

String droppedItem = item.getText().toString();

arr_data1.add(droppedItem);

arr_Adapter.notifyDataSetChanged();

arr_data2.remove(droppedItem);

arr_Adapter2.notifyDataSetChanged();

return true;

}

return true;

case DragEvent.ACTION_DRAG_ENDED:

return true;

default: // unknown case

return false;

}

}

}

//構造拖動影像

private static class MyDragShadowBuilder extends View.DragShadowBuilder{

private static Drawable shadow;

//生成影像

public MyDragShadowBuilder(View view) {

super(view);

shadow=new ColorDrawable(Color.LTGRAY);

}

//設置影像參數

@Override

public void onProvideShadowMetrics(Point shadowSize, Point shadowTouchPoint) {

super.onProvideShadowMetrics(shadowSize, shadowTouchPoint);

int width=getView().getWidth();

int height=getView().getHeight();

shadow.setBounds(0,0,width,height);

shadowSize.set(width,height);

shadowTouchPoint.set(width/2,height/2);

}

//畫影像

@Override

public void onDrawShadow(Canvas canvas) {

//super.onDrawShadow(canvas);

shadow.draw(canvas);

}

}

}

總結

以上是生活随笔為你收集整理的Android跨屏拖动item,android中如何实现两个listview中的item可以互相拖拽移位?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 黄色www| 欧美va天堂| 丰满少妇高潮久久三区 | 色欧美日韩 | 国产精品17p | 青草草在线视频 | 囯产精品一品二区三区 | 日韩成人短视频 | 男女做网站 | 成人片片 | 欧美精品乱码久久久久久按摩 | 就操成人网| 成年人免费网址 | 亚洲蜜臀av | 国产日韩欧美91 | 久久成人在线视频 | 国产精品探花一区二区在线观看 | 人人插人人草 | 一本色道久久综合熟妇 | 国产专区在线视频 | 日本肉体xxxx裸体137大胆图 | 日本色综合网 | 国产做受网站 | 韩国裸体网站 | 国产精品一区二区入口九绯色 | 校园春色中文字幕 | 欧美性受xxx黑人xyx性爽 | 自拍偷拍色图 | 天天干天天爱天天操 | 欧美一区二区在线免费观看 | 欧美精品一区二区三区在线播放 | av黄色免费观看 | 国产成人精品视频在线 | 少妇丰满尤物大尺度写真 | 国产资源av| 国产天堂在线观看 | 色综合99 | 韩国三级视频在线 | 久久免费视频2 | 日韩欧美国产激情 | 精品1卡二卡三卡四卡老狼 日韩三级网 | 午夜国产一区 | 黄色三级在线观看 | a无一区二区三区 | 一区二区视频在线看 | 免费成人深夜夜 | 精品国产乱码久久久久 | 久久综合区 | 婷婷在线一区 | 午夜小视频免费 | 国产精品夜夜嗨 | 91沈先生在线| 丁香婷婷在线观看 | 五十路av| 九九精品影院 | 欧美日韩在线视频观看 | 日韩亚洲国产精品 | 欧美黑人疯狂性受xxxxx喷水 | 日本在线视频www | av色在线观看 | 手机在线永久免费观看av片 | 麻豆成人精品国产免费 | 成人看片免费 | 男女做的视频 | 欧美另类极品videosbest最新版本 | 日韩欧美极品 | 亚洲图片 欧美 | 久久精品aⅴ无码中文字字幕重口 | 自拍偷拍电影 | 久久综合免费视频 | 欧美人与物videos另类 | 欧美性极品 | 中文字幕日韩精品无码内射 | 粉嫩av一区二区三区天美传媒 | 国产又粗又猛又爽又黄的 | 六月婷婷激情 | 97国产一区| 日韩视频精品一区 | 经典杯子蛋糕日剧在线观看免费 | 中文字幕一区二区三区免费看 | 精品久久国产 | 黄色片链接 | 亚洲中文字幕无码av | 国产中文字幕第一页 | 日韩欧美视频一区二区 | www.国产精品视频 | 国产又粗又黄又爽又硬的视频 | av大片在线免费观看 | 97色在线 | 波多野结衣免费在线视频 | 久久精品一 | 亚洲成人精品一区二区 | 好吊妞精品| 久久精品一区二区免费播放 | 欧美一区免费观看 | 国产精品久久不卡 | 鲁丝av| 婷婷激情影院 | 影音先锋日韩资源 |