Java 回收视图项目移除
我正在尝试从recyclerview列表中删除特定项目,但我不知道如何处理它。我无法使用notifyItemRemoved方法,因为我得到一个错误,该错误表示无法从静态上下文中使用此方法。如您所见,我的大多数事件侦听器都位于适配器的视图保持架中,因为这样更方便 这是我的密码Java 回收视图项目移除,java,android,android-recyclerview,Java,Android,Android Recyclerview,我正在尝试从recyclerview列表中删除特定项目,但我不知道如何处理它。我无法使用notifyItemRemoved方法,因为我得到一个错误,该错误表示无法从静态上下文中使用此方法。如您所见,我的大多数事件侦听器都位于适配器的视图保持架中,因为这样更方便 这是我的密码 public class CartListAdapter extends RecyclerView.Adapter<CartListAdapter.RestaurantHolder> { List&
public class CartListAdapter extends RecyclerView.Adapter<CartListAdapter.RestaurantHolder>
{
List<CartItem> cartList;
private static String LOG_TAG = "MyRecyclerViewAdapter";
private static MyClickListener myClickListener;
static Context context;
public static class RestaurantHolder extends RecyclerView.ViewHolder
{
TextView cartItem;
TextView cartPrice;
TextView cartQuantity;
ImageView increaseIcon;
ImageView decreaseIcon;
ImageView deleteIcon;
int selectedPosition;
int quantity;
double price;
Boolean priceStored = false;
RestaurantHolder(View itemView)
{
super(itemView);
cartItem = (TextView)itemView.findViewById(R.id.cartItem);
cartPrice = (TextView)itemView.findViewById(R.id.cartItemPrice);
cartQuantity = (TextView)itemView.findViewById(R.id.itemQuantity);
increaseIcon = (ImageView)itemView.findViewById(R.id.increase);
decreaseIcon = (ImageView)itemView.findViewById(R.id.decrease);
deleteIcon = (ImageView)itemView.findViewById(R.id.delete);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
selectedPosition = getPosition();
Log.i(LOG_TAG,"Position = "+selectedPosition );
}
});
increaseIcon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(!priceStored)
price = Double.parseDouble(cartPrice.getText().toString());
priceStored = true;
quantity = Integer.parseInt(cartQuantity.getText().toString()) + 1;
cartQuantity.setText(String.valueOf(quantity));
cartPrice.setText(String.valueOf(price * quantity));
}
});
decreaseIcon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(quantity > 1) {
quantity = Integer.parseInt(cartQuantity.getText().toString()) - 1;
cartQuantity.setText(String.valueOf(quantity));
cartPrice.setText(String.valueOf(Double.parseDouble(cartPrice.getText().toString())-price));
}else{
Toast.makeText(context,"Minimum order limit",Toast.LENGTH_SHORT).show();
}
}
});
deleteIcon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
selectedPosition = getPosition();
Log.i(LOG_TAG,"Removal Position = "+selectedPosition );
//remove(selectedPosition);
}
});
}
}
CartListAdapter(Context context)
{
this.context = context;
cartList = new ArrayList<CartItem>();
}
public void addItem(CartItem cartItem)
{
cartList.add(cartItem);
}
public void remove(int position)
{
cartList.remove(position);
notifyItemRemoved(position);
}
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView)
{
super.onAttachedToRecyclerView(recyclerView);
}
@Override
public RestaurantHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.cart_item,viewGroup,false);
RestaurantHolder restaurantHolder = new RestaurantHolder(view);
return restaurantHolder;
}
@Override
public void onBindViewHolder(RestaurantHolder restaurantHolder, int i) {
restaurantHolder.cartQuantity.setText(String.valueOf(cartList.get(i).quantity));
restaurantHolder.cartPrice.setText(String.valueOf(cartList.get(i).price));
restaurantHolder.cartItem.setText(cartList.get(i).cartItem);
}
@Override
public int getItemCount() {
return cartList.size();
}
public interface MyClickListener {
public void onItemClick(int position, View v);
}
}
公共类CartListAdapter扩展了RecyclerView.Adapter
{
清单清单;
私有静态字符串LOG_TAG=“MyRecycleServiceAdapter”;
私有静态MyClickListener MyClickListener;
静态语境;
公共静态类RestaurantHolder扩展了RecyclerView.ViewHolder
{
文本视图项;
文本视图价格;
文本浏览量;
图像视图增量图标;
图像视图图标;
图像视图删除图标;
int-selectedPosition;
整数;
双倍价格;
布尔值=false;
RestaurantHolder(查看项目视图)
{
超级(项目视图);
cartItem=(TextView)itemView.findViewById(R.id.cartItem);
cartPrice=(TextView)itemView.findViewById(R.id.cartItemPrice);
cartQuantity=(TextView)itemView.findViewById(R.id.itemQuantity);
increaseIcon=(ImageView)itemView.findViewById(R.id.increase);
decreaseIcon=(ImageView)itemView.findViewById(R.id.decrease);
deleteIcon=(ImageView)itemView.findViewById(R.id.delete);
itemView.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
selectedPosition=getPosition();
Log.i(Log_标签,“Position=“+selectedPosition”);
}
});
increaseIcon.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
如果(!已存储)
price=Double.parseDouble(cartPrice.getText().toString());
priceStored=true;
quantity=Integer.parseInt(cartQuantity.getText().toString())+1;
cartQuantity.setText(String.valueOf(quantity));
cartPrice.setText(String.valueOf(price*quantity));
}
});
decreaseIcon.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
如果(数量>1){
quantity=Integer.parseInt(cartQuantity.getText().toString())-1;
cartQuantity.setText(String.valueOf(quantity));
setText(String.valueOf(Double.parseDouble(cartPrice.getText().toString())-price));
}否则{
Toast.makeText(上下文,“最小订单限制”,Toast.LENGTH_SHORT).show();
}
}
});
deleteIcon.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
selectedPosition=getPosition();
Log.i(Log_标签,“移除位置=“+selectedPosition”);
//移除(选定位置);
}
});
}
}
CartListAdapter(上下文)
{
this.context=上下文;
cartList=newarraylist();
}
公共无效附加项(CartItem CartItem)
{
cartList.add(cartItem);
}
公共无效删除(内部位置)
{
cartList.移除(位置);
已移除(位置)的项目;
}
@凌驾
附加ToRecyclerView(RecyclerView RecyclerView)上的公共无效
{
super.onAttachedToRecyclerView(recyclerView);
}
@凌驾
公共餐厅文件夹onCreateViewHolder(视图组视图组,int i){
View View=LayoutInflater.from(viewGroup.getContext()).flate(R.layout.cart\u项目,viewGroup,false);
RestaurantHolder RestaurantHolder=新的RestaurantHolder(视图);
回头客;
}
@凌驾
BindViewHolder上的公共无效(RestaurantHolder RestaurantHolder,int i){
restaurantHolder.cartQuantity.setText(String.valueOf(cartList.get(i.quantity));
restaurantHolder.cartPrice.setText(String.valueOf(cartList.get(i.price));
restaurantHolder.cartItem.setText(cartList.get(i.cartItem));
}
@凌驾
public int getItemCount(){
返回cartList.size();
}
公共接口MyClickListener{
公共位置(内部位置,视图v);
}
}
我从holder类中删除了static,现在一切正常