1

データベースをループしようとすると、アクティビティがハングアップし、何も起こりません。

    final JSONArray jArray = new JSONArray(result);
    while (i < jArray.length()) {
        JSONObject json = jArray.getJSONObject(i);
        title.setText(json.getString("PhoneName"));
        price.setText("Price : " + json.getString("PhonePrice"));
        modelnumber.setText(json.getString("ModelNumber"));
        arrowfront.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                i++;
            }
        });
        arrowback.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                i--;
            }
        });
    }
} catch (Exception e) {
    Log.e("tag", e.toString());
}
}

データベースに接続しようとしています。最初はテキストビューに最初のアイテムが表示され、次に矢印をクリックすると、テーブルの2行目を表示したいというように..しかし、アクティビティが起動すると、ハングアップして何も表示されませんlogcat にエラーが表示されないこともあります。また、logcat には「タグ」が表示されません。なにか提案を??

4

1 に答える 1

0

わかりました、このようにします:

final JSONArray jArray = new JSONArray(result);
private ArrayList<HashMap<String,String>> resultList = new ArrayList<HashMap<String,String>>();
int position=0;

for (int i=0;i<jArray.length();i++) {
HashMap<String,String> hm= new HashMap<String,String>();
JSONObject json = jArray.getJSONObject(i);
hm.put("title",json.getString("PhoneName"));
hm.put("price","Price : " + json.getString("PhonePrice"));
hm.put("modelNumber",json.getString("ModelNumber"));
resultList.add(hm);
}

arrowfront.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                position++;
HashMap <String,String> frontHm = new HashMap <String,String>();
frontHm=resultList.get(position);
        title.setText(frontHM.get("title");
        price.setText(frontHM.get("price"));
        modelnumber.setText(frontHM.get("modelNumber"));
            }
        });

arrowback.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                position--;
HashMap <String,String> backHm = new HashMap <String,String>();
backHm=resultList.get(position);
        title.setText(backHM.get("title");
        price.setText(backHM.get("price"));
        modelnumber.setText(backHM.get("modelNumber"));
            }
        });

そのため、グローバルな「位置」変数内の位置を追跡し続けることが考えられます。また、arraylist の範囲外に出ることはできないため、クリック リスナー内に最初と最後の位置をチェックするロジックを追加しませんでした。自分で行ってください。

于 2013-07-02T14:02:56.313 に答える