我正在尝试从回收器视图中删除,但我收到错误,不知道为什么。我正在监听删除按钮的点击,并将id发送到要删除的主活动,但它显示列表为空,它不应该是空的!我想从回收器视图中删除一个项目,当单击该按钮时,该项目链接到该项目的id,该项目被发送到mainactivity以从productList中删除,但当它在onCreate上明确加载了许多元素时,该项目显示为空
这是MainActivity
类:
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
类:
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);
}
}
}
https://stackoverflow.com/questions/51622292
复制相似问题