BackAccessボタンを押すと、このShoppingActivityが破棄され、再びそのアクティビティにアクセスすると、リサイクルビューアイテムが2回交換されたことがわかります。その問題をどうやって解決するのですか?リサイクラーのアイテムビューにデータが正しく表示されない
ShoppingActivity.java 私はリサイクルビュー項目を見つけるすべてここに書かれたコードとボレークラスIが戻って押したときにも、ここで呼び出されると、再びその活動を訪れるが
@Override 保護され、ボイドのonCreate(バンドルsavedInstanceStateを){置き換えられます super.onCreate(savedInstanceState); setContentView(R.layout.activity_shopping);
recyclerView = (RecyclerView) findViewById(R.id.rv_recycler_view);
layoutManager = new LinearLayoutManager(this);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(layoutManager);
btn_sort_name = (Button) findViewById(R.id.btn_name);
btn_sort_price = (Button) findViewById(R.id.btn_price);
tv_total_products = (TextView) findViewById(R.id.totalproduct);
tv_apihits = (TextView) findViewById(R.id.apihits);
tv_total_products.setText(null);
if(savedInstanceState==null){
final JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Request.Method.GET,
BaseUrl,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
int index = 0;
arrayList.clear();
while (index < response.length()) {
try {
JSONObject jsonObject = response.getJSONObject(index);
arrayList.add(new Items(jsonObject.getString("name"),
jsonObject.getString("description"),
jsonObject.getString("category"),
jsonObject.getDouble("price"),
jsonObject.getInt("quantity"),
jsonObject.getString("shipping"),
jsonObject.getString("location"),
jsonObject.getString("color"),
jsonObject.getString("link")));
da = jsonObject.getString("name");
Log.d(TAG, da);
index++;
total_products = index;
} catch (JSONException e) {
e.printStackTrace();
}
}
recyclerViewAdapter = new RecyclerViewAdapter(arrayList, ShoppingActivity.this);
recyclerView.setAdapter(recyclerViewAdapter);
tv_total_products.append(String.valueOf(total_products));
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d(TAG, "Error");
}
});
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(jsonArrayRequest);
}
recyclerView.addOnItemTouchListener(new RecyclerViewAdapter.ViewItemClick(getApplicationContext(), recyclerView,
new RecyclerViewAdapter.ItemClickListener() {
@Override
public void clickedItem(View view, int position) {
name = arrayList.get(position).getName();
description = arrayList.get(position).getDescription();
category = arrayList.get(position).getCategory();
shipping = arrayList.get(position).getShipping();
location = arrayList.get(position).getLocation();
color = arrayList.get(position).getColor();
link = arrayList.get(position).getLink();
price = arrayList.get(position).getPrice();
quantity = arrayList.get(position).getQuantity();
DataParcel dataParcel = new DataParcel(name, description, category, shipping, location, color, link, price, quantity);
Intent intent = new Intent(ShoppingActivity.this, DetailsViewActivity.class);
intent.putExtra("data", dataParcel);
startActivity(intent);
}
}));
}
@Override
public void onBackPressed() {
super.onBackPressed();
finish();
}
そして、これは私のDetailsViewActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_details_view);
btn_back= (Button) findViewById(R.id.btn_back);
btn_link= (Button) findViewById(R.id.btn_link);
btn_share= (Button) findViewById(R.id.btn_share);
btn_sms= (Button) findViewById(R.id.btn_sms);
tv_description= (TextView) findViewById(R.id.tv_description);
tv_app_name= (TextView) findViewById(R.id.tv_app_name);
category= (Button) findViewById(R.id.category);
price= (Button) findViewById(R.id.price);
location= (Button) findViewById(R.id.location);
quantity= (Button) findViewById(R.id.quantity);
shipping= (Button) findViewById(R.id.shipping);
iv_star1= (ImageView) findViewById(R.id.star1);
iv_star2= (ImageView) findViewById(R.id.star2);
iv_star3= (ImageView) findViewById(R.id.star3);
iv_star4= (ImageView) findViewById(R.id.star4);
iv_item_image= (ImageView) findViewById(R.id.item_image);
Bundle bundle= getIntent().getExtras();
dataParcel= bundle.getParcelable("data");
category.setText(dataParcel.getCategory());
price.setText(String .valueOf(dataParcel.getPrice()));
quantity.setText("Avilable"+String.valueOf( dataParcel.getQuantity()));
location.setText(dataParcel.getLocation());
shipping.setText("Shipping: "+dataParcel.getShipping());
tv_app_name.setText(dataParcel.getName());
tv_description.setText(dataParcel.getDescription());
}
@Override
protected void onStart() {
super.onStart();
btn_back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
}
@Override
public void onBackPressed() {
super.onBackPressed();
finish();
}
あなたのコードに 'LayoutManager'を設定できますか? – KeLiuyue