从 android 中的 recyclerview 适配器中删除一个项目
Remove an item from recyclerviewAdapter in android
我正在尝试从 RecyclerView 中删除一个项目,动画正在发生,但该项目没有被清除。在执行以下操作后,我在晚上出现了相同的项目:
notifyItemRemoved(favlistTransID);
notifyItemRangeChanged(favlistTransID, 1);
这是我尝试做的事情:
当我点击它时我有回收站图像图标,我调用 API 删除云服务器上的 require 项目并从 RecyclerView 中清除它。
内部:扩展适配器:RecyclerView.Adapter<FavouriteList_Adapter_Recycler.WishListViewHolder>
我有以下代码:
@Override
public void onBindViewHolder(WishListViewHolder personViewHolder, int i)
{
contactNameText = favlistDetails.get(i).getname().toString();
tempURL = favlistDetails.get(i).getImage().toString();
favlistTransID = favlistDetails.get(i).getfavtransID().toString();
mContext = personViewHolder.image.getContext();
TAG_MESSAGE = mContext.getResources().getString(R.string.tagmessage);
favDB = new favContactsDB(mContext);
customerID = favDB.getCustID();
if (tempURL.equalsIgnoreCase(""))
{
Picasso.with(mContext).load(url).placeholder(R.drawable.none).error(R.drawable.none).centerCrop().resize(218, 230).into(personViewHolder.image);
}
else
{
Picasso.with(mContext).load(favlistDetails.get(i).getImage().toString()).placeholder(R.drawable.none).error(R.drawable.none).centerCrop().resize(218, 230).into(personViewHolder.image);
}
personViewHolder.removeFav.setTag(i);
personViewHolder.removeFav.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
Integer taggedPosition = (Integer) v.getTag();
Log.e("Position::-", Integer.toString(taggedPosition));
removeWish(taggedPosition);
}
});
}
//从 API 中删除并从列表中删除项目:
private void removeWish(final int wishlistTransID)
{
final RequestParams requestParams = new RequestParams();
requestParams.put("tokenValue", mContext.getResources().getString(R.string.tokenvalue));
requestParams.put("FavTranID", favlistDetails.get(favlistTransID).getfavtransID().toString());
requestParams.put("ContactID", customerID);
final String uploadWebsite = mContext.getResources().getString(R.string.removefavitem);
AsyncHttpClient client = new AsyncHttpClient();
client.post(uploadWebsite, requestParams, new JsonHttpResponseHandler()
{
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject response)
{
try
{
success = response.getString(TAG_MESSAGE);
if (success.equalsIgnoreCase(mContext.getResources().getString(R.string.message)))
{ favDB.deletefavouritedetails(favlistDetails.get(favlistTransID).getname().toString());
Toast.makeText(mContext, mContext.getResources().getString(R.string.removefav), Toast.LENGTH_SHORT).show();
notifyItemRemoved(favlistTransID);
notifyItemRangeChanged(favlistTransID, 1);
}
else
{
Toast.makeText(mContext, mContext.getResources().getString(R.string.errorwish), Toast.LENGTH_SHORT).show();
}
}
catch (JSONException e)
{
e.printStackTrace();
}
}
@Override
public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject errorResponse)
{
super.onFailure(statusCode, headers, throwable, errorResponse);
Toast.makeText(mContext, mContext.getResources().getString(R.string.error_server), Toast.LENGTH_SHORT).show();
}
});
}
不确定哪里出了问题?
谁能帮我解决这两天一直在苦苦挣扎的问题?
谢谢!
您没有从数据源中删除项目,您必须从 favlistDetails 中删除项目,然后调用 notifyItemRemoved();
在您的 onSuccess 方法中从 DataSource 中删除项目
if (success.equalsIgnoreCase(mContext.getResources().getString(R.string.message)))
{ favDB.deletefavouritedetails(favlistDetails.get(favlistTransID).getname().toString());
Toast.makeText(mContext, mContext.getResources().getString(R.string.removefav), Toast.LENGTH_SHORT).show();
favlistDetails.remove(favlistTransID);
notifyItemRemoved(favlistTransID);
notifyItemRangeChanged(favlistTransID, 1);
}
我正在尝试从 RecyclerView 中删除一个项目,动画正在发生,但该项目没有被清除。在执行以下操作后,我在晚上出现了相同的项目:
notifyItemRemoved(favlistTransID);
notifyItemRangeChanged(favlistTransID, 1);
这是我尝试做的事情:
当我点击它时我有回收站图像图标,我调用 API 删除云服务器上的 require 项目并从 RecyclerView 中清除它。
内部:扩展适配器:RecyclerView.Adapter<FavouriteList_Adapter_Recycler.WishListViewHolder>
我有以下代码:
@Override
public void onBindViewHolder(WishListViewHolder personViewHolder, int i)
{
contactNameText = favlistDetails.get(i).getname().toString();
tempURL = favlistDetails.get(i).getImage().toString();
favlistTransID = favlistDetails.get(i).getfavtransID().toString();
mContext = personViewHolder.image.getContext();
TAG_MESSAGE = mContext.getResources().getString(R.string.tagmessage);
favDB = new favContactsDB(mContext);
customerID = favDB.getCustID();
if (tempURL.equalsIgnoreCase(""))
{
Picasso.with(mContext).load(url).placeholder(R.drawable.none).error(R.drawable.none).centerCrop().resize(218, 230).into(personViewHolder.image);
}
else
{
Picasso.with(mContext).load(favlistDetails.get(i).getImage().toString()).placeholder(R.drawable.none).error(R.drawable.none).centerCrop().resize(218, 230).into(personViewHolder.image);
}
personViewHolder.removeFav.setTag(i);
personViewHolder.removeFav.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
Integer taggedPosition = (Integer) v.getTag();
Log.e("Position::-", Integer.toString(taggedPosition));
removeWish(taggedPosition);
}
});
}
//从 API 中删除并从列表中删除项目:
private void removeWish(final int wishlistTransID)
{
final RequestParams requestParams = new RequestParams();
requestParams.put("tokenValue", mContext.getResources().getString(R.string.tokenvalue));
requestParams.put("FavTranID", favlistDetails.get(favlistTransID).getfavtransID().toString());
requestParams.put("ContactID", customerID);
final String uploadWebsite = mContext.getResources().getString(R.string.removefavitem);
AsyncHttpClient client = new AsyncHttpClient();
client.post(uploadWebsite, requestParams, new JsonHttpResponseHandler()
{
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject response)
{
try
{
success = response.getString(TAG_MESSAGE);
if (success.equalsIgnoreCase(mContext.getResources().getString(R.string.message)))
{ favDB.deletefavouritedetails(favlistDetails.get(favlistTransID).getname().toString());
Toast.makeText(mContext, mContext.getResources().getString(R.string.removefav), Toast.LENGTH_SHORT).show();
notifyItemRemoved(favlistTransID);
notifyItemRangeChanged(favlistTransID, 1);
}
else
{
Toast.makeText(mContext, mContext.getResources().getString(R.string.errorwish), Toast.LENGTH_SHORT).show();
}
}
catch (JSONException e)
{
e.printStackTrace();
}
}
@Override
public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject errorResponse)
{
super.onFailure(statusCode, headers, throwable, errorResponse);
Toast.makeText(mContext, mContext.getResources().getString(R.string.error_server), Toast.LENGTH_SHORT).show();
}
});
}
不确定哪里出了问题?
谁能帮我解决这两天一直在苦苦挣扎的问题?
谢谢!
您没有从数据源中删除项目,您必须从 favlistDetails 中删除项目,然后调用 notifyItemRemoved();
在您的 onSuccess 方法中从 DataSource 中删除项目
if (success.equalsIgnoreCase(mContext.getResources().getString(R.string.message)))
{ favDB.deletefavouritedetails(favlistDetails.get(favlistTransID).getname().toString());
Toast.makeText(mContext, mContext.getResources().getString(R.string.removefav), Toast.LENGTH_SHORT).show();
favlistDetails.remove(favlistTransID);
notifyItemRemoved(favlistTransID);
notifyItemRangeChanged(favlistTransID, 1);
}