欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java實(shí)現(xiàn)拖拽列表項(xiàng)的排序功能

 更新時(shí)間:2017年02月22日 10:15:43   作者:一只菜雞  
這篇文章主要介紹了Java實(shí)現(xiàn)拖拽列表項(xiàng)的排序功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下

在一些允許用戶自定義欄目順序的app(如:鳳凰新聞、網(wǎng)易云音樂等),我們可以方便地拖拽列表項(xiàng)來完成列表的重新排序,進(jìn)而完成對欄目順序的重排。這個(gè)功能很人性化,而實(shí)現(xiàn)起來其實(shí)很簡單(甚至都不用寫什么后臺代碼),只有三步。

①把冰箱門打開

首先,我們需要讓冰箱的大門敞開,也就是允許我們進(jìn)行拖拽的相關(guān)操作。以ListView為例,注意下面幾個(gè)屬性。

<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屬性允許元素進(jìn)行拖動(dòng),它繼承自UIElement基類,為所有可視元素支持。

CanReorderItems屬性繼承自ListViewBase基類,允許列表控件的項(xiàng)可以重新排序。

IsSwipeEnabled屬性(swipe有“輕掃”之意)也需要設(shè)置為“True”,否則在觸摸屏等輸入設(shè)備下無法進(jìn)行操作。相關(guān)的詳盡說明在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.

(有趣的是最后一段:當(dāng)列表不允許輕掃手勢(撤銷選定,拖動(dòng),拖拽重排)時(shí),我們可以“顯式”地將IsSwipeEnabled屬性設(shè)置為False來提升應(yīng)用的性能。)

②把大象裝進(jìn)去

前臺ok后,我們就可以在后臺加點(diǎn)東西,把我們的排序邏輯(其實(shí)并沒有,微軟已經(jīng)寫好了)添加進(jìn)去。這個(gè)demo里,我用了一個(gè)按鈕和一個(gè)文本框來觀察重排的結(jié)果。如下:

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] + " ";
      }
    }
  }

這樣,重新排序后,點(diǎn)擊按鈕,我們即可觀察到結(jié)果了。

③把冰箱門關(guān)上

把大象(?)裝進(jìn)去之后,最后就是我們的收尾工作了。顯然,剛才的列表只是一個(gè)中間的載體,是我們待排序欄目的簡單顯示。一般而言,這個(gè)listview會安置在contentdialog或是popup里,那么怎么在重排后立即讓父頁面上的欄目得到相應(yīng),進(jìn)行重排呢?我們用個(gè)預(yù)定義的委托即可,加在剛才的后臺代碼里(冰箱能裝的東西其實(shí)挺多的)。

 public Action action;

然后在父頁面注冊方法,比如:           

btn.Click += async (s, e) => 
       {
         var dialog = new Dialogs.Sort();
         dialog.action += async () => { await sortagain(); };
         await dialog.ShowAsync();
      };

以上所述是小編給大家介紹的Java實(shí)現(xiàn)拖拽列表項(xiàng)的排序功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 詳解Spring Data JPA中Repository的接口查詢方法

    詳解Spring Data JPA中Repository的接口查詢方法

    repository代理有兩種方式從方法名中派生出特定存儲查詢:通過直接從方法名派生查詢和通過使用一個(gè)手動(dòng)定義的查詢。本文將通過示例詳細(xì)講解Spring Data JPA中Repository的接口查詢方法,需要的可以參考一下
    2022-04-04
  • Java查看線程運(yùn)行狀態(tài)的方法詳解

    Java查看線程運(yùn)行狀態(tài)的方法詳解

    這篇文章主要為大家詳細(xì)介紹了Java語言如何查看線程運(yùn)行狀態(tài)的方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-08-08
  • Spring學(xué)習(xí)筆記之bean的基礎(chǔ)知識

    Spring學(xué)習(xí)筆記之bean的基礎(chǔ)知識

    ean在Spring和SpringMVC中無所不在,將這個(gè)概念內(nèi)化很重要,所以下面這篇文章主要給大家介紹了關(guān)于Spring學(xué)習(xí)筆記之bean基礎(chǔ)的相關(guān)資料,文中通過示例代碼介紹的非常詳解,需要的朋友可以參考下。
    2017-12-12
  • 一文詳解Java抽象類到底有多抽象

    一文詳解Java抽象類到底有多抽象

    這篇文章主要介紹了一文詳解Java抽象類到底有多抽象,抽象方法所在的類必須是抽象類,子類若繼承了一個(gè)抽象類,就必須覆寫父類的所有抽象方法,這里的子類是普通類,是強(qiáng)制要求覆寫所有抽象方法,但是如果子類也是一個(gè)抽象類,那么就可以不覆寫
    2022-06-06
  • IDEA快速生成實(shí)體類的示例教程

    IDEA快速生成實(shí)體類的示例教程

    這篇文章主要介紹了IDEA快速生成實(shí)體類的示例教程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • 深入Java分布式計(jì)算的使用分析

    深入Java分布式計(jì)算的使用分析

    本篇文章對Java分布式計(jì)算的使用進(jìn)行了詳細(xì)的介紹。需要的朋友參考下
    2013-05-05
  • Java%(取模運(yùn)算)全面講解

    Java%(取模運(yùn)算)全面講解

    這篇文章主要介紹了Java%(取模運(yùn)算)全面講解,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • springboot連接不上redis的三種解決辦法

    springboot連接不上redis的三種解決辦法

    這篇文章主要介紹了springboot連接不上redis的三種解決辦法,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • 解決使用stream將list轉(zhuǎn)map時(shí),key重復(fù)導(dǎo)致報(bào)錯(cuò)的問題

    解決使用stream將list轉(zhuǎn)map時(shí),key重復(fù)導(dǎo)致報(bào)錯(cuò)的問題

    這篇文章主要介紹了解決使用stream將list轉(zhuǎn)map時(shí),key重復(fù)導(dǎo)致報(bào)錯(cuò)的問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 關(guān)于Springboot的日志配置

    關(guān)于Springboot的日志配置

    Spring Boot默認(rèn)使用LogBack日志系統(tǒng),如果不需要更改為其他日志系統(tǒng)如Log4j2等,則無需多余的配置,LogBack默認(rèn)將日志打印到控制臺上,需要的朋友可以參考下
    2023-05-05

最新評論