오픈 소스 drag-sort-listview 는 좌우 슬라이딩 삭제 와 정렬 을 실현 합 니 다.

Android 컨트롤 에서 ListView 좌우 슬라이딩 삭제 와 수 동 정렬 은 매우 현란 하고 도 사용 하 는 기능 입 니 다.인터넷 에 국내 큰 소 가 이 기능 을 실현 하지만 응용 하면 미끄럼 이 원활 하지 않 고 오류 가 발생 하기 쉬 우 며 gitHub 에 외국인 이 잘 쓰 여 있 습 니 다.링크 를 열 려 면 누 르 십시오.
drag-sort-listview 를 다운로드 한 후 library 를 항목 에 가 져 온 다음 이 listview 를 사용 해 야 할 항목 에 추가 합 니 다.
XML 레이아웃 파일 에서:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <com.mobeta.android.dslv.DragSortListView
        xmlns:dslv="http://schemas.android.com/apk/res/com.test.androidtest"
        android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_margin="5dp"
        android:dividerHeight="5dp"
        android:fastScrollEnabled="true"
        dslv:collapsed_height="2dp"
        dslv:drag_enabled="true"
        dslv:drag_handle_id="@id/drag_handle"
        dslv:drag_scroll_start="0.99"
        dslv:drag_start_mode="onDown"
        dslv:float_alpha="0.6"
        dslv:max_drag_scroll_speed="0.6"
        dslv:remove_enabled="true"
        dslv:remove_mode="flingRemove"
        dslv:slide_shuffle_speed="0.5"
        dslv:sort_enabled="true"
        dslv:track_drag_sort="false"
        dslv:use_default_controller="true" />

</LinearLayout>

그 중에서 com.test.androidtest 자원 경 로 를 프로젝트 패키지 경로 로 바 꿉 니 다.(AndroidManifest.xml 파일 에서 볼 수 있 습 니 다.)Activity 의 실현 은 다음 과 같다.
package com.test.androidtest;

import java.util.ArrayList;
import java.util.Arrays;

import android.app.ListActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;

import com.mobeta.android.dslv.DragSortListView;

public class MainActivity extends ListActivity {
	private ArrayAdapter<String> adapter;

	private String[] array;
	private ArrayList<String> list;

	private DragSortListView.DropListener onDrop = new DragSortListView.DropListener() {
		@Override
		public void drop(int from, int to) {
			String item = adapter.getItem(from);

			adapter.notifyDataSetChanged();
			adapter.remove(item);
			adapter.insert(item, to);
		}
	};

	private DragSortListView.RemoveListener onRemove = new DragSortListView.RemoveListener() {
		@Override
		public void remove(int which) {
			adapter.remove(adapter.getItem(which));
		}
	};

	private DragSortListView.DragScrollProfile ssProfile = new DragSortListView.DragScrollProfile() {
		@Override
		public float getSpeed(float w, long t) {
			if (w > 0.8f) {
				// Traverse all views in a millisecond
				return ((float) adapter.getCount()) / 0.001f;
			} else {
				return 10.0f * w;
			}
		}
	};

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		DragSortListView lv = (DragSortListView) getListView();

		lv.setDropListener(onDrop);
		lv.setRemoveListener(onRemove);
		lv.setDragScrollProfile(ssProfile);

		array = getResources().getStringArray(R.array.countries);
		list = new ArrayList<String>(Arrays.asList(array));

		adapter = new ArrayAdapter<String>(this,
				R.layout.list_item_handle_right, R.id.text, list);
		setListAdapter(adapter);
	}
}
list_item_handle_right.xml 의 레이아웃 은:
4
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="@dimen/item_height"
  android:orientation="horizontal">
  <TextView
    android:id="@+id/text"
    android:layout_width="wrap_content"
    android:layout_height="@dimen/item_height"
    android:layout_weight="1"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:gravity="center_vertical"
    android:paddingLeft="8dp" />
  <!-- <ImageView
    android:id="@id/drag_handle"
    android:background="@drawable/ic_launcher"
    android:layout_width="wrap_content"
    android:layout_height="@dimen/item_height"
    android:layout_weight="0" /> -->
</LinearLayout>
ImageView 주석 이 떨 어 지면 미 끄 러 지지 않 아 도 됩 니 다.
해석 이 거 칠 어서 벽돌 을 던 져 옥 을 끌 어 올 리 는 역할 을 했 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기