samedi 23 mai 2015

How to make elements(dynamic) obtained as JSON response, clickable in Android and connecting them to some web link?

The following is the CODE I am using to get the data from Codeforces.com API as JSON response. If anyone can please help me improve this to convert them to clickable links and then attach a web link to them. :

public class Http extends Activity {

TextView httpStuff;
HttpClient client;
JSONObject json;
final static String URL = "http://ift.tt/1FDE5X4";
String m = "";
public static String[] sarr = new String[200];
public static String[] name = new String[200];
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.httpex);

    httpStuff = (TextView)findViewById(R.id.tvHttp);
    client = new DefaultHttpClient();
    new Read().execute("result");
}

public JSONObject lastSub(String username) throws ClientProtocolException, IOException, JSONException {
    StringBuilder url = new StringBuilder(URL);
    url.append(username);
    HttpGet get = new HttpGet(url.toString());

    HttpResponse r = client.execute(get);
    int status = r.getStatusLine().getStatusCode();
    if(status == 200) {
        HttpEntity e = r.getEntity();
        String data = EntityUtils.toString(e);
        JSONObject last = new JSONObject(data);
        //JSONObject last = new JSONObject(data).getJSONArray("result").getJSONObject(0).getJSONObject("problem");
        JSONArray array = new JSONObject(data).getJSONArray("result");
        String m1=null, m2=null, m3=null;
        String n1 = System.getProperty("line.separator");
        int cnt=0, flag=0;
        for(int k=0; k<array.length(); k++)
        {
            last = array.getJSONObject(k).getJSONObject("problem");
            JSONObject v = array.getJSONObject(k);
            if(v.getString("verdict").contentEquals("OK")) {
                m1 = last.getString("name");
                m2= last.getString("contestId");
                m2= m2.concat("/");
                m3= last.getString("index");
                m2 = m2.concat(m3);
                flag = 0;
                for(int i=0; i<cnt; i++) {
                    if (sarr[i].equals(m1)) {
                        flag = 1;
                    }
                }
                    if(flag == 0) {
                        m = m.concat(m1);
                        m= m.concat(n1);
                        sarr[cnt] = m1;
                        name[cnt] = m2;
                        cnt++;
                    }
            }
        }
        return last;
    }
    else {
        Toast.makeText(Http.this, "error", Toast.LENGTH_SHORT);
        return null;

    }
}

public class Read extends AsyncTask <String, Integer, String> {

    @Override
    protected String doInBackground(String... arg0) {
        // TODO Auto-generated method stub
        try {
            json = lastSub("avm12&from=1&count=100");
            return m;
        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onPostExecute(String result) {
        // TODO Auto-generated method stub
          httpStuff.setText(result);

    }

}

}

Aucun commentaire:

Enregistrer un commentaire