リストビューでアイテムをクリックするとアイテム詳細が表示されますが、その詳細はVolley経由でデータベースから取得されました。コードは終了しましたが、問題は次のとおりです。 2回目のクリックでのみ動作します。たとえば、アイテム1(data-> Intent)をクリックすると、詳細アクティビティにジャンプしますが、は、デフォルトのレイアウト(表示されるすべての要素がnullです)のみを表示します。その後、前のListViewに戻り、アイテム1、、すべてを表示をクリックします。 アイテム2をクリックすると、詳細ページのアイテム1が表示されます。リストビューに戻るアイテム2をクリックすると、item2が表示されます。ここでAndroid ListView Onclickインテントデータの遅延(2度目のクリックで作業)
は私のコードです: リストビュー:
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(文字列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パターンを使用しますか? –