2017-01-05 4 views
0

だから、JSONコードからデータを表示するTextViewをいくつか増やしたいのですが。 Increment TextView with button clickボタンクリックとJSONでTextViewをインクリメント

が、私はプログラムはから最初に、件のデータを表示したいので、私は、私のコードでそれを適応させる方法がわからない:

package com.example.kane.bibliokane; 

import android.content.DialogInterface; 
import android.os.AsyncTask; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import org.json.JSONException; 
import org.json.JSONObject; 
import org.json.JSONArray; 
import java.io.BufferedInputStream; 
import java.io.BufferedReader; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.net.URL; 
import java.io.IOException; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 

import java.net.HttpURLConnection; 

import static android.R.attr.data; 


public class ListesLivres extends AppCompatActivity { 

TextView Titre, Auteur, Categorie , Editeur , Prix; 
int score = 0; 
Button b1,b2; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.listeslivres); 

    Titre = (TextView) findViewById(R.id.textView16); 
    Auteur = (TextView) findViewById(R.id.textView17); 
    Categorie = (TextView) findViewById(R.id.textView18); 
    Editeur = (TextView) findViewById(R.id.textView19); 
    Prix = (TextView) findViewById(R.id.textView20); 
    b1 = (Button)findViewById(R.id.button4); 
    b2 = (Button)findViewById(R.id.button3); 

    new getData().execute(); 
} 

class getData extends AsyncTask<String, String, String> { 

    HttpURLConnection urlConnection; 

    @Override 
    protected String doInBackground(String... args) { 

     StringBuilder result = new StringBuilder(); 

     try { 
      URL url = new URL("http://192.168.43.13:8000/api/liste.json"); 
      urlConnection = (HttpURLConnection) url.openConnection(); 
      InputStream in = new BufferedInputStream(urlConnection.getInputStream()); 

      BufferedReader reader = new BufferedReader(new InputStreamReader(in)); 

      String line; 
      while ((line = reader.readLine()) != null) { 
       result.append(line); 
      } 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } finally { 
      urlConnection.disconnect(); 
     } 


     return result.toString(); 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     try { 
      JSONArray jsonArray = new JSONArray(result); 
      JSONObject jsonObject = jsonArray.getJSONObject(0); 
      String t = jsonObject.getString("titre"); 
      String a = jsonObject.getString("auteur"); 
      String c = jsonObject.getString("categorie"); 
      String e = jsonObject.getString("editeur"); 
      String p = jsonObject.getString("prix"); 
      Titre.setText(t); 
      Auteur.setText(a); 
      Categorie.setText(c); 
      Editeur.setText(e); 
      Prix.setText(p); 

     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 

    } 

} 
} 

私はこのトピックのボタンを経由してのTextViewをインクリメントする方法を説明しましたjsonObject(0)の場合、ボタン(b1)をクリックすると++になり、別のボタン(b2)では0になるまでデクリメントされます。

おかげで

答えて

1

1)あなたはjsonArray、変数グローバルにする必要があります。変数int currentIndexを定義して、現在のインデックスを追跡します。 2)ボタンにonclickリスナーをアタッチしてインデックスを変更します。

b1.setOnClickListener(new View.onClickListner(){ 
    @Override 
    public void onClick(View v){ 
     currentIndex++; 
     updateTextViews(); 
    } 
}); 

b2

3をデクリメントするための同様のリスナーを有するであろう)、それに基づいて

public void updateTextViews(){ 
    //Add checks for current index to ensure it lies within range 
    try{ 
     JSONObject object = jsonArray.getJSONObject(currentIndex); 
     //Set content for textviews 
    }catch(JSONException e){ 

    } 
} 
をTextViewsの値を currentIndexjsonArrayを使用して設定する方法を定義します
関連する問題