使用Button单击和JSON增加TextView

时间:2017-01-05 22:39:52

标签: java android json button textview

好的,所以我想增加一些显示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();
        }

    }

}
}

我在本主题中看到了如何通过Button增加TextView:Increment TextView with button click

但是我不知道如何使用我的代码来调整它,因为我希望程序首先显示来自jsonObject(0)的数据,然后如果我点击一个按钮(b1),它会增加++ ,并在另一个按钮(b2)中,它递减 - 直到它达到0。

由于

1 个答案:

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

   }
}