所以,我創建了一個類來處理滑動事件更新的數據:ItemTouchHelper onSwiped()不從構造
public class CardViewSwipeListener : ItemTouchHelper.Callback
{
private Context context;
private List<Person> listWithData;
private const int RESET_ADAPTER = 1;
public CardViewSwipeListener(Context context, List<Person> listWithData)
{
this.context = context;
this.listWithData = listWithData;
}
public override int GetMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder)
{
int swipeFlags = ItemTouchHelper.Start | ItemTouchHelper.End;
return MakeMovementFlags(0, swipeFlags);
}
public override bool OnMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target)
{
return true;
}
public override void OnSwiped(RecyclerView.ViewHolder viewHolder, int direction)
{
if (direction == ItemTouchHelper.End)
{
((Activity)context).StartActivityForResult(new Intent(Intent.ActionCall, Android.Net.Uri.Parse(string.Format("tel:{0}", listWithData[viewHolder.AdapterPosition].PhoneNumber))),RESET_ADAPTER);
Toast.MakeText(context,"Call "+listWithData[viewHolder.AdapterPosition].Name,ToastLength.Short).Show();
}
else if (direction == ItemTouchHelper.Start)
{
((Activity)context).StartActivityForResult(new Intent(Intent.ActionView, Android.Net.Uri.Parse(string.Format("sms:{0}", this.listWithData[viewHolder.AdapterPosition].PhoneNumber))),RESET_ADAPTER;
Toast.MakeText(context, "SMS " + this.listWithData[viewHolder.AdapterPosition].Name, ToastLength.Short).Show();
}
}
}
在MainActivivty的onCreate我用下面的代碼以提供回收視圖處理滑動事件。
itemTouchHelper = new ItemTouchHelper(new CardViewSwipeListener(this, listWithData));
recycler = FindViewById<RecyclerView>(Resource.Id.recycler);
recycler.HasFixedSize = true;
layoutManager = new LinearLayoutManager(this);
recycler.SetLayoutManager(layoutManager);
recycler.SetAdapter(new RecyclerViewAdapter(listWithData,this));
itemTouchHelper.AttachToRecyclerView(recycler);
問題是,我需要將listWithData更改爲另一個,但是當我這樣做onSwipe不考慮任何更改。
沒有結果:
itemTouchHelper = new ItemTouchHelper(new CardViewSwipeListener(this, NewList));
recycler.SetAdapter(new RecyclerViewAdapter(NewList,this));
itemTouchHelper.AttachToRecyclerView(recycler);
Java代碼的解決方案也被接受)
在此先感謝。
GetView是在你設置新的適配器時調用的嗎? –