Java는 목록 항목을 끌어당기는 정렬 기능을 실현한다

4102 단어 java드래그 정렬
사용자가 항목의 순서를 사용자 정의할 수 있는 일부 앱(예를 들어 봉황뉴스, 왕이운음악 등)에서 우리는 목록 항목을 편리하게 드래그하여 목록의 순서를 다시 정렬하고 항목의 순서를 다시 정렬할 수 있다.이 기능은 매우 인성화되어 실현되기는 사실 매우 간단하다. (심지어는 백엔드 코드를 쓰지 않아도 된다.) 단지 세 걸음밖에 안 된다.
① 냉장고 문을 열다
우선, 냉장고의 문을 열어야 한다. 즉, 우리가 드래그하는 것을 허락하는 것이다.ListView 의 경우 다음 속성을 참조하십시오.

<StackPanel>
    <ListView x:Name="list" 
         AllowDrop="True"
         CanReorderItems="True" 
         IsSwipeEnabled="True">
      <ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem">
          <Setter Property="Background" Value="Gray"/>
          <Setter Property="Foreground" Value="White"/>
          <Setter Property="Margin" Value="4"/>
        </Style>
      </ListView.ItemContainerStyle>
    </ListView>
    <Button Click="Button_Click">Show Items</Button>
    <TextBlock x:Name="txt"/>
  </StackPanel>
AllowDrop 속성은 모든 시각적 요소를 지원하는 UIELement 기본 클래스에서 상속되는 요소를 드래그할 수 있습니다.
CanReorder Items 속성은 ListViewBase 기본 클래스에서 상속되며 목록 컨트롤의 항목을 다시 정렬할 수 있습니다.
IssWipeEnabled 속성(swipe는'가볍게 쓸어'라는 뜻이 있음)도'True'로 설정해야 합니다. 그렇지 않으면 터치스크린 등 입력 장치에서 조작할 수 없습니다.자세한 내용은 MSDN 문서에 설명되어 있습니다(https://docs.microsoft.com/en-us/uwp/api/Windows.UI.Xaml.Controls.ListViewBase.
Remarks
Setting IsSwipeEnabled to false disables some default touch interactions, so it should be set to true when these interactions are needed. For example:
If item selection is enabled and you set IsSwipeEnabled to false, a user can deselect items by right-clicking with the mouse, but can't deselect an item with touch by using a swipe gesture.
If you set CanDragItems to true and IsSwipeEnabled to false, a user can drag items with the mouse, but not with touch.
If you set CanReorderItems to true and IsSwipeEnabled to false, a user can reorder items with the mouse, but not with touch.
You typically set IsSwipeEnabled to false to disable swipe animations when items in the view don't support interactions that use the swipe gesture, like deselecting, dragging, and reordering. Disabling the animation when it's not needed can improve the performance of your app.
(흥미로운 것은 마지막 단락: 목록에서 가볍게 스캔하는 제스처를 허용하지 않을 때 (선택 취소, 드래그, 드래그 리셋) IsSwipeEnabled 속성을 False로 설정하여 응용 프로그램의 성능을 향상시킬 수 있습니다.)
② 코끼리를 담는다
프론트 데스크톱 ok 후에 우리는 백엔드에 물건을 추가하여 우리의 정렬 논리를 추가할 수 있다.이 데모에서 나는 단추와 텍스트 상자를 사용하여 리셋 결과를 관찰했다.다음과 같습니다.

public sealed partial class MainPage : Page
  {
    public MainPage()
    {
      this.InitializeComponent();
      for (int i = 0; i < 10; i++)
      {
        list.Items.Add($"-----THIS IS ITEM {i}-----");
      }
    }
    private void Button_Click(object sender, RoutedEventArgs e)
    {
      txt.Text = string.Empty;
      foreach (var item in list.Items)
      {
        txt.Text += item.ToString()[18] + " ";
      }
    }
  }
이렇게 해서 다시 정렬한 후에 버튼을 누르면 우리는 결과를 관찰할 수 있다.
③ 냉장고 문 닫아
코끼리를(?)넣은 후에 마지막이 우리의 마무리 작업이다.분명히 아까의 목록은 중간 캐리어일 뿐, 우리가 정렬해야 할 항목의 간단한 표시입니다.일반적으로 이listview는contentdialog나popup에 설치됩니다. 그러면 어떻게 다시 배열한 후에 바로 부모 페이지의 항목을 상응하게 다시 배열합니까?우리는 미리 정의된 의뢰를 하면 된다. 방금 전의 백그라운드 코드에 넣으면 된다.

 public Action action;
그리고 부모 페이지에 등록하는 방법, 예를 들면:

btn.Click += async (s, e) => 
       {
         var dialog = new Dialogs.Sort();
         dialog.action += async () => { await sortagain(); };
         await dialog.ShowAsync();
      };
위에서 말한 것은 편집자가 여러분께 소개한 자바가 목록 항목을 끌어당기는 정렬 기능을 실현하는 것입니다. 여러분께 도움이 되었으면 합니다. 만약에 궁금한 것이 있으면 저에게 메시지를 남겨 주십시오. 편집자는 제때에 답장을 드리겠습니다.여기에서도 저희 사이트에 대한 지지에 감사드립니다!

좋은 웹페이지 즐겨찾기