2017-01-05 36 views
0

好吧,所以我想增加一些顯示JSON代碼數據的TextView。使用Button單擊和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:Increment TextView with button click

但我不知道如何將它與我的代碼適應,因爲我希望程序首先顯示,DATAS 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)定義其使用currentIndexjsonArray的方法和設置TextViews的基於它

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){ 

    } 
} 
相關問題