Ich möchte eine Artikeldetails anzeigen, wenn ich auf ein Element in ListView klicke, diese Details wurden aus der Datenbank über Volley erhalten. Ich beendete den Code, aber das Problem ist: Es funktioniert nur in der zweiten Zeit klicken. Zum Beispiel, wenn ich auf item1 (Daten-> Intent) klicken, springen Sie zu Details Aktivität, aber es zeigen nur das Standardlayout (jedes Element in Sicht ist Null). Klicken Sie dann zurück zum vorherigen ListView und klicken Sie auf item1, alles anzeigen. Wenn ich nun auf item2 klicke, wird item1 auf der Detailseite angezeigt. Zurück zu ListView klicken item2, wird item2 anzeigen.Android ListView Onclick Intent Datenverzögerung (Arbeit beim zweiten Mal klicken)
Hier ist mein Code: Listview:
lvResults.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
/**
* get data from db based on id_product
*/
Bean bean = resultAdapter.getItem(position);//GET ITEM POSITION
getPromotionById(bean.getIdProduct());//GET DATA JSONOBJECT FROM DATABASE via Volley
Intent intent = new Intent(ListActivity.this, DetailsActivity.class);
intent.putExtra("item", itemToPass);
startActivity(intent);
}
});
getPromotionById (String id_product)
private void getPromotionById(String id_product) {
Map<String, String> map = new HashMap<String, String>();
map.put("id_product",id_product);
CustomRequest jsonObjectRequest = new CustomRequest(Request.Method.POST, showUrl,map,new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
JSONObject promotion = response.getJSONObject("product");
itemToPass.setIdProduct(promotion.getString("id_product"));
itemToPass.setTitle(promotion.getString("name"));
}
catch (JSONException e) {e.printStackTrace();}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {}});
requestQueue.add(jsonObjectRequest);
}
DetailActivity:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
item = new Item();
item = (Item) getIntent().getSerializableExtra("item");
setContentView(R.layout.item_detail_1);
itemTitle = (TextView) findViewById(R.id.title);
setData(item);
}
private void setData(Item item) {
new DownloadImageTask((ImageView) findViewById(R.id.img))
.execute("url");
itemTitle.setText(item.getTitle());
}
ViewHolder Muster verwenden? –