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)
{
}
}
我正在使用用于android的telerik编写listview示例。但当我向左/右滑动控件时,它并不显示“删除”或“编辑”按钮。
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);
}
}
}
这是我在使用我的听者类,请告诉我如何解决这个问题。
发布于 2016-04-26 09:34:20
行将自动删除,因为您正在SwipeExecuteListener
中的SwipeExecuteListener
方法中直接删除它。如果您希望在滑动时在行中显示按钮,则需要在OnBindSwipeContentHolder
中实现ListViewAdapter
方法。下面是来自Telerik文档的示例。
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);
}
编辑:尝试删除SwipeExecuteListener。如果您有这些行,请尝试删除它们。
SwipeExecuteListener swipeExecuteListener = new SwipeExecuteListener ();
swipeExecuteBehavior.AddListener(swipeExecuteListener)
https://stackoverflow.com/questions/36860756
复制相似问题