2016-04-26 12 views
0
public class SwipeExecuteListener : Java.Lang.Object, SwipeExecuteBehavior.ISwipeExecuteListener 
{ 

    private ListViewAdapter listViewAdapter; 
    public SwipeExecuteListener(ListViewAdapter adapter) 
    { 
     listViewAdapter = adapter; 
    } 
    public void OnSwipeStarted(int position) 
    { 
    } 
    public void OnSwipeProgressChanged(int position, int offset, View swipeContent) 
    { 

    } 



    public void OnSwipeEnded(int position, int offset) 
    { 
     int absOffset = Math.Abs(offset); 
     if (absOffset > 300) 
     { 
      listViewAdapter.Remove(position); 
     } 
     listViewAdapter.NotifySwipeExecuteFinished(); 
    } 
    public void OnExecuteFinished(int position) 
    { 

    } 
} 

私はアンドロイドのためのtelerikのUIを使用してlistviewの例に取り組んでいます。私は左の私のコントロールをスワイプしていたときが、/右のは、これは私が問題を解決する方法を教えてください私のリスナークラスを使用していているTelerik自動的にアンドロイドスワイプのclossingのリストビュー

public class CityAdapter : ListViewAdapter 
{ 
    public CityAdapter(IList items) 
     : base(items) 
    {  
    } 

    public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType) 
    { 
     LayoutInflater inflater = LayoutInflater.From(parent.Context); 
     View view = inflater.Inflate(Resource.Layout.city_list_item, parent, false); 
     return new CityViewHolder(view); 
    } 

    public override void OnBindListViewHolder(ListViewHolder holder, int position) 
    { 
     CityViewHolder viewHolder = (CityViewHolder)holder; 
     City city = (City)Items[position]; 
     viewHolder.nameView.Text = city.Name; 
     viewHolder.countryView.Text = city.Country; 
    } 

    public override void OnBindSwipeContentHolder(ListViewHolder holder, int position) 
    { 
     RelativeLayout mainLayout = (RelativeLayout)holder.ItemView; 
     LinearLayout leftLayout = (LinearLayout)mainLayout.GetChildAt(0); 
     LinearLayout rightLayout = (LinearLayout)mainLayout.GetChildAt(1); 

     Button leftButton = new Button(mainLayout.Context); 
     leftButton.Text = "edit"; 

     Button rightButton = new Button(mainLayout.Context); 
     rightButton.Text = "delete"; 

     leftLayout.RemoveAllViews(); 
     leftLayout.AddView(leftButton); 

     rightLayout.RemoveAllViews(); 
     rightLayout.AddView(rightButton); 
    } 

    public void RefreshList() 
    { 

    } 

    public override void NotifyRefreshFinished() 
    { 
     base.NotifyRefreshFinished(); 

     SwipeRefreshBehavior swipeRefreshBehavior = new SwipeRefreshBehavior(); 
     swipeRefreshBehavior.EndRefresh(true); 

    } 

    public class CityViewHolder : ListViewHolder 
    { 
     public TextView nameView; 
     public TextView countryView; 

     public CityViewHolder(View itemView) 
      : base(itemView) 
     { 

      nameView = (TextView)itemView.FindViewById(Resource.Id.nameView); 
      countryView = (TextView)itemView.FindViewById(Resource.Id.countryView); 
     } 
    } 
} 

削除または編集ボタン表示されていません。

答えて

1

OnSwipeEndedメソッドで直接削除する行がSwipeExecuteListenerにあるため、行が自動的に削除されています。スワイプ中にボタンに行を表示する場合は、ListViewAdapterOnBindSwipeContentHolderメソッドを実装する必要があります。ここにはTelerik Documentationの例があります。

public override void OnBindSwipeContentHolder (ListViewHolder holder, int position) 
{ 
RelativeLayout mainLayout = (RelativeLayout)holder.ItemView; 
LinearLayout leftLayout = (LinearLayout)mainLayout.GetChildAt(0); 
LinearLayout rightLayout = (LinearLayout)mainLayout.GetChildAt(1); 

Button leftButton = new Button(Context); 
leftButton.Text = "edit"; 
Button rightButton = new Button(Context); 
rightButton.Text = "delete"; 

rightButton.Click+= (object sender, EventArgs e) => { 
      Remove(position); 
      NotifySwipeExecuteFinished(); 
     }; 

leftLayout.RemoveAllViews(); 
leftLayout.AddView(leftButton); 

rightLayout.RemoveAllViews(); 
rightLayout.AddView(rightButton); 
} 

EDIT:SwipeExecuteListenerを削除してみます。これらの行がある場合は、削除してみてください

SwipeExecuteListener swipeExecuteListener = new SwipeExecuteListener(); 
swipeExecuteBehavior.AddListener(swipeExecuteListener) 
+0

OnSwipeEnd削除ボタンの表示方法を教えてください。 absOffsetは50だけなので、私の行は削除されません。私の問題は、右側の削除ボタンをスワイプすると1秒しか表示されない場合です。ボタンを選択したままではありません。 –

+0

SwipeExecuteListenerを削除してみます。編集を確認します – Sreeraj

+0

OnSwipeEnd()でswipeExecuteBehavior.SwipeOffsetを設定するには –

関連する問題