首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >试图对空对象引用调用接口方法'java.lang.Object java.util.List.remove(int)‘|正在尝试从回收器视图中删除

试图对空对象引用调用接口方法'java.lang.Object java.util.List.remove(int)‘|正在尝试从回收器视图中删除
EN

Stack Overflow用户
提问于 2018-08-01 05:24:22
回答 1查看 245关注 0票数 -1

我正在尝试从回收器视图中删除,但我收到错误,不知道为什么。我正在监听删除按钮的点击,并将id发送到要删除的主活动,但它显示列表为空,它不应该是空的!我想从回收器视图中删除一个项目,当单击该按钮时,该项目链接到该项目的id,该项目被发送到mainactivity以从productList中删除,但当它在onCreate上明确加载了许多元素时,该项目显示为空

这是MainActivity类:

代码语言:javascript
复制
public class MainActivity extends AppCompatActivity {

    private Toolbar mainToolBar;

    private AdView mAdView;

    RecyclerView recyclerView;
    ProductAdapter adapter;

    List<Product> productList;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);




        loadData();



        recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
        recyclerView.setHasFixedSize(true);

        recyclerView.setLayoutManager(new LinearLayoutManager(this));



        adapter = new ProductAdapter(this, productList);
        recyclerView.setAdapter(adapter);

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.main_menu, menu);

        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        startActivity(new Intent(MainActivity.this, activity_add.class));


        return true;
    }



    public void deleteItem(int id){

        id = id - 1;
        productList.remove(id);
        adapter.notifyItemRemoved(id);
    }
    private void loadData(){
        SharedPreferences sharedPreferences = getSharedPreferences("shared 
        prefs", 0);
        Gson gson = new Gson();
        String json = sharedPreferences.getString("items", null);
        Type type = new TypeToken<ArrayList<Product>>(){}.getType();
        productList = gson.fromJson(json, type);

        if(productList == null){
            productList = new ArrayList<>();
        }
    }

    private void addToList(){
        SharedPreferences sharedPreferences = getSharedPreferences("shared prefs", 0);
        SharedPreferences.Editor editor = sharedPreferences.edit();
        Gson gson = new Gson();
        String json = gson.toJson(productList);
        editor.putString("items", json);
        editor.apply();
    }

}

这是ProductAdapter类:

代码语言:javascript
复制
public class ProductAdapter extends RecyclerView.Adapter<ProductAdapter.ProductViewHolder>{

    private Context mCtx;
    private List<Product> productList;

    public ProductAdapter(Context mCtx, List<Product> productList) {
        this.mCtx = mCtx;
        this.productList = productList;
    }

    @NonNull
    @Override
    public ProductViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        LayoutInflater inflater = LayoutInflater.from(mCtx);
        View view = inflater.inflate(R.layout.list_layout, null);
        return new ProductViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull ProductViewHolder holder, int position) {
        final Product product = productList.get(position);

        holder.textViewTitle.setText(product.getTitle());
        holder.textViewRating.setText(String.valueOf(product.getRating()));



        holder.deleteBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                new MainActivity().deleteItem(product.getId());
            }
        });
    }

    @Override
    public int getItemCount() {
        return productList.size();
    }

    class ProductViewHolder extends RecyclerView.ViewHolder{

        TextView textViewTitle, textViewRating;

        Button deleteBtn;

        public ProductViewHolder(View itemView) {
            super(itemView);

            textViewTitle = itemView.findViewById(R.id.textViewTitle);
            textViewRating = itemView.findViewById(R.id.textViewRating);

            deleteBtn = itemView.findViewById(R.id.deleteBtn);

        }
    }
}
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51622292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档