Android:如何显示Internet数据(JSON格式)

时间:2013-04-04 12:03:02

标签: android json android-asynctask

我从网站上获得了JSON数组,现在如果我使用循环并分离每个对象并填写我的layout.xml文件。一切都很好只有问题是我的布局文件显示完成后的所有数据。它应该在每次填充线性布局时显示。

提前致谢,抱歉我的英语不好。

以下是我的Android代码。

public class searchClassified extends Activity implements ScrollViewListener
{


ObservableScrollView scrollView;
ProgressDialog _progressDialog;
HttpClient client;
int j = 1, counter = 0;
int page_no = 1;
String k = "";
final static String URL = "http://www.lmf.com.pk/admin/json.php?";
private static final int SPLASH_DURATION = 300; // 0.3 seconds
final getInternetData obj = new getInternetData();
Handler handler = new Handler();


@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.get_classified);
    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
    scrollView = (ObservableScrollView) findViewById(R.id.my_scroll);
    scrollView.setScrollViewListener(this);

    String s = getIntent().getExtras().getString("query")!= "" ? getIntent().getExtras().getString("query") : "";
    EditText et = (EditText) findViewById(R.id.query);
    et.setText(s);
    k = "all="+URLEncoder.encode(s);
    new getBackgroundData().execute();

}



public void onScrollEnded(ObservableScrollView scrollView, int x, int y,
        int oldx, int oldy) {
    // TODO Auto-generated method stub
    page_no = page_no + 1;
    k = k+"&page_no="+page_no;
    //Toast.makeText(this, "Loading", 5000).show();
    handler.postDelayed(new Runnable() {

        public void run() {

    try
    {
        JSONArray array = obj.getDATA(k,URL);
        if(array.length() > 0)
        {

        LinearLayout sv = (LinearLayout) findViewById(R.id.data);
        for (int i = 0; i <array.length(); i++) {


            JSONObject row = array.getJSONObject(i);

            //// TextView Creation start here /////////

           TextView tv = (TextView)getLayoutInflater().inflate(R.layout.tvtemplate, null);
           tv.setText(row.getString("post_title"));
            tv.setTextColor(Color.WHITE);
            tv.setTextSize(14);
            tv.setPadding(8, 6, 0, 12);
            tv.setFocusable(true);
            tv.setLayoutParams(new LayoutParams(
                    LayoutParams.WRAP_CONTENT,
                    LayoutParams.WRAP_CONTENT));

            //// TextView Creating Ends here /////////


            //// Horizontal Line Creating here /////////
            View v = new View(searchClassified.this);
            LinearLayout.LayoutParams viewLp = new LayoutParams(LayoutParams.MATCH_PARENT, 1);
            viewLp.setMargins(0, 4, 0, 4);

            v.setLayoutParams(viewLp);
            v.setBackgroundColor(Color.LTGRAY);

            //// Horizontal Line Creating Ends here /////////


            //// Image Creating Starts from  here /////////

            LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

            lp.setMargins(3, 0, 15, 8);

            lp.width = 70;
            lp.height = 80;
            ImageView imageView = new ImageView(searchClassified.this);
            String[] parts = row.getString("post_img").split("/");
            int last_index = parts.length - 1;
            String image_name = "thumb_"+parts[last_index];
            String str = "";
            for(int j=0; j<last_index; j++)
            {
                str += parts[j]+"/";
            }
            String path = "http://www.lmf.com.pk/"+str+image_name;


            URL url = new URL(path);
            URLConnection conn = url.openConnection();
            conn.connect();
            InputStream is = conn.getInputStream();


            BufferedInputStream bis = new BufferedInputStream(is);

            Bitmap bm = BitmapFactory.decodeStream(bis);
            imageView.setImageBitmap(bm);
            bis.close();
            is.close();

            //// Image Creating Ends here /////////



            // Creating LinearLAyout /////////

            LinearLayout l1 = new LinearLayout(searchClassified.this);

            l1.setOrientation(LinearLayout.HORIZONTAL);
            l1.setHapticFeedbackEnabled(true);
            l1.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
            l1.setId(obj.convertStrtoInt(row.getString("post_id")));
            l1.setHapticFeedbackEnabled(true);
            l1.setOnClickListener(new OnClickListener() {

                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    Dialog d = new Dialog(searchClassified.this);
                    d.setTitle("Under Construction");
                    d.show();

                    //Intent i = new Intent(getClassified.this,com.example.lmf.MainActivity2.class);
                    //i.putExtra("sub_cat_id", v.getId());
                    //startActivity(i);
                }
            });


            l1.addView(imageView, lp);
            l1.addView(tv);
            sv.addView(l1);
            sv.addView(v);

        }


        }
        else
        {
            Toast.makeText(getApplicationContext(), "No More Data Available", Toast.LENGTH_LONG).show();
        }



    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
        }
    },SPLASH_DURATION);

}


public void searchAds(View v)
{

    EditText query = (EditText) findViewById(R.id.query);
    String q = query.getText().toString();
    if(q == "" || q == "search")
    {
        Dialog d = new Dialog(this);
        d.setTitle("Enter Valid Search Parameter");
        d.show();
    }
    else
    {
        //Toast.makeText(context, q, Toast.LENGTH_LONG).show();
        Intent i = new Intent(searchClassified.this,com.example.lmf.searchClassified.class);
        i.putExtra("query", ""+q+"");
        startActivity(i);

    }

}

public void showProgress()
{
     _progressDialog = ProgressDialog.show(
                searchClassified.this,
                "Please wait",
                "Performing task..."
            );

}

public void hideProgress()
{
    _progressDialog.dismiss();
}



//////////// Async Class

private class getBackgroundData extends AsyncTask<Void, Integer, JSONArray>
{

    @Override
    protected void onPreExecute() 
    {
        // update the UI immediately after the task is executed
        showProgress();

    }

    @Override
    protected JSONArray doInBackground(Void... params) 
    {
        try
        {

            JSONArray array = obj.getDATA(k,URL);
            return array;

        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        return null;
    }


    protected void onProgressUpdate(Integer... values) 
    {
            super.onProgressUpdate(values);
            Log.i( "makemachine", "onProgressUpdate(): " +  String.valueOf( values[0] ) );

    }


    @Override
    protected void onPostExecute(JSONArray array) 
    {
        LinearLayout sv = (LinearLayout) findViewById(R.id.data);
        try
        {

        for (int i = 0; i <array.length(); i++) {


            JSONObject row = array.getJSONObject(i);

            //// TextView Creation start here /////////

            TextView tv = (TextView)getLayoutInflater().inflate(R.layout.tvtemplate, null);
           tv.setText(row.getString("post_title"));
            tv.setTextColor(Color.WHITE);
            tv.setTextSize(14);
            tv.setPadding(8, 6, 0, 12);
            tv.setFocusable(true);
            tv.setLayoutParams(new LayoutParams(
                    LayoutParams.WRAP_CONTENT,
                    LayoutParams.WRAP_CONTENT));

            //// TextView Creating Ends here /////////



            //// Horizontal Line Creating here /////////
            View v = new View(searchClassified.this);
            LinearLayout.LayoutParams viewLp = new LayoutParams(LayoutParams.MATCH_PARENT, 1);
            viewLp.setMargins(0, 4, 0, 4);

            v.setLayoutParams(viewLp);
            v.setBackgroundColor(Color.LTGRAY);

            //// Horizontal Line Creating Ends here /////////


            //// Image Creating Starts from  here /////////

            LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

            lp.setMargins(3, 0, 15, 8);

            lp.width = 70;
            lp.height = 80;
            ImageView imageView = new ImageView(searchClassified.this);
            String[] parts = row.getString("post_img").split("/");
            int last_index = parts.length - 1;
            String image_name = "thumb_"+parts[last_index];
            String str = "";
            for(int j=0; j<last_index; j++)
            {
                str += parts[j]+"/";
            }
            String path = "http://www.lmf.com.pk/"+str+image_name;


            URL url = new URL(path);
            URLConnection conn = url.openConnection();
            conn.connect();
            InputStream is = conn.getInputStream();


            BufferedInputStream bis = new BufferedInputStream(is,8192);

            Bitmap bm = BitmapFactory.decodeStream(bis);
            imageView.setImageBitmap(bm);
            bis.close();
            is.close();

            //// Image Creating Ends here /////////



            // Creating LinearLAyout /////////

            LinearLayout l1 = new LinearLayout(searchClassified.this);

            l1.setOrientation(LinearLayout.HORIZONTAL);
            l1.setHapticFeedbackEnabled(true);
            l1.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
            l1.setId(obj.convertStrtoInt(row.getString("post_id")));
            l1.setHapticFeedbackEnabled(true);
            l1.setOnClickListener(new OnClickListener() {

                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    Dialog d = new Dialog(searchClassified.this);
                    d.setTitle("Under Construction");
                    d.show();

                    //Intent i = new Intent(getClassified.this,com.example.lmf.MainActivity2.class);
                    //i.putExtra("sub_cat_id", v.getId());
                    //startActivity(i);
                }
            });

            l1.addView(imageView, lp);
            l1.addView(tv);
            sv.addView(l1);
            sv.addView(v);


        }

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

        }
            hideProgress();

    }



}



/////////// Ends Here 

}

0 个答案:

没有答案