извлекать данные из JSON данных через URL и отображать их в приложении android с использованием представления списка или представления переработчика - PullRequest
0 голосов
/ 03 февраля 2020

Я хочу отобразить общее количество данных в JSON URL без каких-либо сторонних библиотек, таких как Volley, Retrofit et c. Но я не смог получить полные данные и отобразить их в приложении, я смог отображать только объекты. Мое требование - вызывать каждый массив и его внутренние объекты, которые я не могу сделать. Пожалуйста, помогите мне, кто угодно.

------- XML КОД ---

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Click Me"
        android:layout_marginBottom="10dp"
        android:id="@+id/button"/>


    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/button">
        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:padding="5dp"
            android:textSize="24sp"
            android:id="@+id/fetcheddata"
            android:hint="Feteched Text Here"/>
    </ScrollView>


</RelativeLayout>

------- JSON ДАННЫЕ ---- -

{
"Table":[

{"Error_code":"0","Error_Message":"Success","EncryptionFlag":"N"}

],

"Table1":[

{"Fund_Id":"128","FN_FundDescription":"ABCD FUND"},{"Fund_Id":"178","FN_FundDescription":"XYZ FUND"},{"Fund_Id":"116","FN_FundDescription":"Pritham FUND"},{"Fund_Id":"118","FN_FundDescription":"Ram FUND"},{"Fund_Id":"130","FN_FundDescription":"Mannu FUND"}]}

------- FETCHED. JAVA ------

public class fetchData extends AsyncTask<Void,Void,Void>
{
    String data="";
    String dataParsed="";
    String singleParsed="";
    @Override
    protected Void doInBackground(Void... voids)
    {
        try
        {
            URL url=new URL("https://api.myjson.com/bins/baobi");
            HttpURLConnection httpURLConnection= (HttpURLConnection) url.openConnection();
            InputStream inputStream = httpURLConnection.getInputStream();
            BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(inputStream));
            String line="";
            while (line!=null)
            {
                line=bufferedReader.readLine();
                data =data + line;
            }
            JSONArray JA = new JSONArray(data);
            for (int i=0; i<JA.length();i++)
            {
                JSONObject JO= (JSONObject) JA.get(i);
                singleParsed="Fund Id:" + JO.get("Fund_Id") +"\n" +
                             "Fund Description:" + JO.get("FN_FundDescription") +"\n";
                dataParsed = dataParsed + singleParsed + "\n";
            }
        }
        catch (MalformedURLException e)
        {
            e.printStackTrace();
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
        catch (JSONException e)
        {
            e.printStackTrace();
        }
        return null;
    }
    @Override
    protected void onPostExecute(Void aVoid)
    {
        super.onPostExecute(aVoid);
        MainActivity.data.setText(this.dataParsed);
    }
}

----- ОСНОВНАЯ ДЕЯТЕЛЬНОСТЬ. JAVA - ---

public class MainActivity extends AppCompatActivity
{
    Button click;
    public static TextView data;
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        click=findViewById(R.id.button);
        data=(TextView)findViewById(R.id.fetcheddata);
        click.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                fetchData process=new fetchData();
                process.execute();
            }
        });
    }
}

1 Ответ

0 голосов
/ 03 февраля 2020

попробуйте с этим, он работает для текущего ответа

     public class fetchData extends AsyncTask<Void,Void,String>
{
    String data="";
    String dataParsed="";
    String singleParsed="";
    @Override
    protected String doInBackground(Void... voids)
    {
        try
        {
            URL url=new URL("https://api.myjson.com/bins/baobi");
            HttpURLConnection httpURLConnection= (HttpURLConnection) url.openConnection();
            InputStream inputStream = httpURLConnection.getInputStream();
            BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(inputStream));
            String line="";
            while (line!=null)
            {
                line=bufferedReader.readLine();
                data =data + line;
            }
            JSONObject object = new JSONObject(data);
            JSONArray JA=object.optJSONArray("Table1");
            JSONArray Error=object.optJSONArray("Table");

            for (int i=0; i<JA.length();i++)
            {
                JSONObject JO= (JSONObject) JA.get(i);
                singleParsed="Fund Id:" + JO.get("Fund_Id") +"\n" +
                        "Fund Description:" + JO.get("FN_FundDescription") +"\n";
                dataParsed = dataParsed + singleParsed + "\n";

            }
            for (int j=0; j<Error.length();j++)
            {
                JSONObject JO= (JSONObject) Error.get(j);
                singleParsed="Error_code:" + JO.get("Error_code") +"\n" +
                        "Error_Message:" + JO.get("Error_Message") +"\n"+
                        "EncryptionFlag:" + JO.get("EncryptionFlag") +"\n";
                dataParsed = dataParsed + singleParsed + "\n";

            }
            return dataParsed;
        }
        catch (MalformedURLException e)
        {
            e.printStackTrace();
        } catch (IOException e)
        {
            e.printStackTrace();
        }
        catch (JSONException e)
        {
            e.printStackTrace();
        }
        return null;
    }
    @Override
    protected void onPostExecute(String aVoid)
    {
        super.onPostExecute(aVoid);
        Log.e("data asyc",dataParsed+"");
    }
}

onPostExecute У меня есть журнал печати, в моем случае вывод

data asy c:

Fund Id:128
Fund Description:ABCD FUND

Fund Id:178
Fund Description:XYZ FUND

Fund Id:116
Fund Description:Pritham FUND

Fund Id:118
Fund Description:Ram FUND

Fund Id:130
Fund Description:Mannu FUND

Error_code:0
Error_Message:Success
EncryptionFlag:N
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...