日韩性视频-久久久蜜桃-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可以互相拖拽移位?的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 尤物最新网址 | hd性videos意大利精品 | 成人性色生活片 | 综合久色| 国产处女| 日本黄网站色大片免费观看 | 日本黄色中文字幕 | 精品无码在线观看 | 啪啪av导航 | 午夜在线免费视频 | 色播久久| 丰满人妻翻云覆雨呻吟视频 | a人片| 动漫av在线免费观看 | 香蕉视频日本 | 日本中文字幕视频 | 亚洲综合久久av一区二区三区 | 一进一出视频 | 日本视频三区 | 黄色精品免费 | 国产a黄 | 美女爆乳18禁www久久久久久 | 日本免费黄网站 | 麻豆激情视频 | 日韩v在线| 日韩黄色短片 | 91美女啪啪 | 日本色妞 | 久青草视频 | 中文字幕有码av | 久久午夜鲁丝片 | 色88久久久久高潮综合影院 | 国产精品网站在线观看 | 韩日一级片 | 国产精品久久久久久久久久妞妞 | 免费观看av网址 | 国产精品啊啊啊 | 日韩精品视频在线观看免费 | 亚洲av色香蕉一区二区三区 | 日本japanese极品少妇 | 99久久免费精品 | 亚洲国产精品自拍视频 | 欧美日韩一区在线 | 欧美色图另类 | 伊人超碰 | 国产成年人网站 | 穿扒开跪着折磨屁股视频 | 国产视频手机在线观看 | 亚洲区视频 | 狠狠天天 | 国产精品久久久久久久久毛片 | 污网站在线看 | 性激烈视频在线观看 | 一级黄色伦理片 | 精品久久99 | 日本a天堂| 69视频网址 | 美女撒尿无遮挡网站 | 亚洲私人影院 | 午夜小视频在线播放 | 国产特级aaaaaa大片 | 国产二区电影 | 精品伊人久久 | wwwxxxx在线观看 | 在线视频这里只有精品 | 欧美高清一区 | 久久亚洲av成人无码国产电影 | 中文字幕有码在线视频 | 中文字字幕在线中文乱码电影 | 波多野结衣乳巨码无在线 | 亚洲国产日韩一区无码精品久久久 | 干b视频在线观看 | www成人网 | 波多野吉衣一二三区乱码 | 欧美一级色 | 熟女丝袜一区 | 97免费超碰| 成年人网站免费在线观看 | 欧美xxxxx精品 | 美丽的姑娘在线观看免费 | 精品| 国产在线一级 | 欧美高清hd | 亚洲成人中文字幕 | 92av视频 | 亚洲高清成人 | www.成人在线观看 | 免费20分钟超爽视频 | 久久久久久日产精品 | 少妇按摩一区二区三区 | 一区二区三区四区五区在线视频 | 免费观看已满十八岁 | 大奶在线播放 | 天天插天天干天天操 | 欧美激情亚洲色图 | 亚洲精品无码成人 | 欧美性生交xxxxx久久久 | 亚洲视频在线观看网站 | 美女网站免费观看 |