将数据从android传递到php以在listview中显示

将数据从android传递到php以在listview中显示,php,android,json,listview,Php,Android,Json,Listview,下面是我的列表视图的活动 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.layout_listview); Bundle b = getIntent().getExtras(); categ = b.getString("category_name");

下面是我的列表视图的活动

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.layout_listview);

    Bundle b = getIntent().getExtras();
    categ = b.getString("category_name");

    new ProgressTask(ListDataActivity.this).execute();

}

class ProgressTask extends AsyncTask<String, Void, Boolean> {

    ArrayList<HashMap<String, String>> jsonlist = new ArrayList<HashMap<String, String>>();

    ConnectivityManager conMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    {
        if (conMgr.getActiveNetworkInfo() != null
                && conMgr.getActiveNetworkInfo().isAvailable()
                && conMgr.getActiveNetworkInfo().isConnected()) {
        } else {
            Toast.makeText(getApplicationContext(),
                    "INTERNET CONNECTION NOT PRESENT", Toast.LENGTH_SHORT)
                    .show();
            startActivity(new Intent(ListDataActivity.this,
                    MainActivity.class));
        }

    }

    // private List<Message> messages;
    public ProgressTask(ListActivity activity) {
        context = activity;
    }

    private Context context;

    protected void onPreExecute() {
    }

    @Override
    protected void onPostExecute(final Boolean success) {
        ListAdapter adapter = new SimpleAdapter(context, jsonlist,
                R.layout.row_listitem, new String[] { name, Category },
                new int[] { R.id.vehicleType, R.id.vehicleColor }) {

            @Override
            public View getView(int position, View convertView,
                    ViewGroup parent) {

                if (convertView == null) {

                    // This a new view we inflate the new layout

                    LayoutInflater inflater = (LayoutInflater) context
                            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

                    convertView = inflater.inflate(R.layout.row_listitem,
                            null);
                }

                // TODO Auto-generated method stub
                if (position % 2 == 1) {

                    convertView.setBackgroundColor(Color.rgb(120, 151, 66));
                } else {
                    convertView.setBackgroundColor(Color.rgb(86, 107, 129));
                }
                return super.getView(position, convertView, parent);
            }
        };

        setListAdapter(adapter);

        lv = getListView();

        lv.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {

                @SuppressWarnings("unchecked")
                HashMap<String, String> map = (HashMap<String, String>) lv
                        .getItemAtPosition(position);
                String name = map.get("name");
                Intent intent = new Intent(ListDataActivity.this,
                        DataViewActivity.class);
                intent.putExtra("itemName", name);
                startActivity(intent);
            }
        });
    }

    protected Boolean doInBackground(final String... args) {

        baseAdapter jParser = new baseAdapter();

        ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();
        // define the parameter
        postParameters.add(new BasicNameValuePair("787", categ));
        try {
            CustomHttpClient.executeHttpGet("787");
        } catch (Exception e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        } // get JSON data from URL
        url = url + postParameters;
        JSONArray json = jParser.getJSONFromUrl(url);

        if (json != null) {
            for (int i = 0; i < json.length(); i++) {

                try {
                    JSONObject c = json.getJSONObject(i);

                    String vtype = c.getString(name);
                    String vfuel = c.getString(Category);

                    HashMap<String, String> map = new HashMap<String, String>();

                    // Add child node to HashMap key & value
                    map.put(name, vtype);
                    map.put(Category, vfuel);

                    jsonlist.add(map);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        }
        return null;

    }
}
这是我的php代码 php:

日志:

08-25 13:06:57.085: W/System.err(13843): java.lang.IllegalStateException: Target host must not be null, or set in parameters. scheme=null, host=null, path=787
08-25 13:06:57.085: W/System.err(13843):    at org.apache.http.impl.client.DefaultRequestDirector.determineRoute(DefaultRequestDirector.java:591)
08-25 13:06:57.085: W/System.err(13843):    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:293)
08-25 13:06:57.085: W/System.err(13843):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:591)
08-25 13:06:57.085: W/System.err(13843):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:510)
08-25 13:06:57.085: W/System.err(13843):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:488)
08-25 13:06:57.085: W/System.err(13843):    at com.example.careandcure.CustomHttpClient.executeHttpGet(CustomHttpClient.java:158)
08-25 13:06:57.085: W/System.err(13843):    at com.example.careandcure.ListDataActivity$ProgressTask.doInBackground(ListDataActivity.java:143)
08-25 13:06:57.085: W/System.err(13843):    at com.example.careandcure.ListDataActivity$ProgressTask.doInBackground(ListDataActivity.java:1)
08-25 13:06:57.085: W/System.err(13843):    at android.os.AsyncTask$2.call(AsyncTask.java:264)
08-25 13:06:57.085: W/System.err(13843):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
08-25 13:06:57.085: W/System.err(13843):    at java.util.concurrent.FutureTask.run(FutureTask.java:137)
08-25 13:06:57.085: W/System.err(13843):    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
08-25 13:06:57.085: W/System.err(13843):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
08-25 13:06:57.095: W/System.err(13843):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
08-25 13:06:57.095: W/System.err(13843):    at java.lang.Thread.run(Thread.java:864)
08-25 13:06:57.095: W/dalvikvm(13843): threadid=11: thread exiting with uncaught exception (group=0x40aa8228)
08-25 13:06:57.105: E/AndroidRuntime(13843): FATAL EXCEPTION: AsyncTask #1
08-25 13:06:57.105: E/AndroidRuntime(13843): java.lang.RuntimeException: An error occured while executing doInBackground() 
08-25 13:06:57.105: E/AndroidRuntime(13843):    at android.os.AsyncTask$3.done(AsyncTask.java:278)
08-25 13:06:57.105: E/AndroidRuntime(13843): Caused by: java.lang.IllegalArgumentException: Illegal character in path at index 34:    http://172.16.0.118/jsonscript.php[787=general]
08-25 13:06:57.105: E/AndroidRuntime(13843):    at java.net.URI.create(URI.java:727)
08-25 13:06:57.105: E/AndroidRuntime(13843):    at org.apache.http.client.methods.HttpGet.<init>(HttpGet.java:75)
08-25 13:06:57.105: E/AndroidRuntime(13843):    at com.example.careandcure.baseAdapter.getJSONFromUrl(baseAdapter.java:33)
08-25 13:06:57.105: E/AndroidRuntime(13843):    at com.example.careandcure.ListDataActivity$ProgressTask.doInBackground(ListDataActivity.java:149)
08-25 13:06:57.105: E/AndroidRuntime(13843):    at com.example.careandcure.ListDataActivity$ProgressTask.doInBackground(ListDataActivity.java:1)
08-25 13:06:57.105: E/AndroidRuntime(13843):    at android.os.AsyncTask$2.call(AsyncTask.java:264)
08-25 13:06:57.105: E/AndroidRuntime(13843):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
08-25 13:06:57.085:W/System.err(13843):java.lang.IllegalStateException:目标主机不能为null,也不能在参数中设置。scheme=null,host=null,path=787
08-25 13:06:57.085:W/System.err(13843):位于org.apache.http.impl.client.DefaultRequestDirector.determineRoute(DefaultRequestDirector.java:591)
08-25 13:06:57.085:W/System.err(13843):位于org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:293)
08-25 13:06:57.085:W/System.err(13843):位于org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:591)
08-25 13:06:57.085:W/System.err(13843):位于org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:510)
08-25 13:06:57.085:W/System.err(13843):位于org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:488)
08-25 13:06:57.085:W/System.err(13843):位于com.example.careandcure.CustomHttpClient.executeHttpGet(CustomHttpClient.java:158)
08-25 13:06:57.085:W/System.err(13843):位于com.example.careandcure.ListDataActivity$ProgressTask.doInBackground(ListDataActivity.java:143)
08-25 13:06:57.085:W/System.err(13843):位于com.example.careandcure.ListDataActivity$ProgressTask.doInBackground(ListDataActivity.java:1)
08-25 13:06:57.085:W/System.err(13843):在android.os.AsyncTask$2.call(AsyncTask.java:264)
08-25 13:06:57.085:W/System.err(13843):位于java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
08-25 13:06:57.085:W/System.err(13843):位于java.util.concurrent.FutureTask.run(FutureTask.java:137)
08-25 13:06:57.085:W/System.err(13843):在android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
08-25 13:06:57.085:W/System.err(13843):位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
08-25 13:06:57.095:W/System.err(13843):位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
08-25 13:06:57.095:W/System.err(13843):位于java.lang.Thread.run(Thread.java:864)
08-25 13:06:57.095:W/dalvikvm(13843):threadid=11:线程以未捕获异常退出(组=0x40aa8228)
08-25 13:06:57.105:E/AndroidRuntime(13843):致命异常:AsyncTask#1
08-25 13:06:57.105:E/AndroidRuntime(13843):java.lang.RuntimeException:执行doInBackground()时出错
08-25 13:06:57.105:E/AndroidRuntime(13843):在android.os.AsyncTask$3.done(AsyncTask.java:278)
08-25 13:06:57.105:E/AndroidRuntime(13843):由以下原因引起:java.lang.IllegalArgumentException:索引34处的路径中存在非法字符:http://172.16.0.118/jsonscript.php[787=一般]
08-25 13:06:57.105:E/AndroidRuntime(13843):位于java.net.URI.create(URI.java:727)
08-25 13:06:57.105:E/AndroidRuntime(13843):位于org.apache.http.client.methods.HttpGet.(HttpGet.java:75)
08-25 13:06:57.105:E/AndroidRuntime(13843):在com.example.careandcure.baseAdapter.getJSONFromUrl(baseAdapter.java:33)
08-25 13:06:57.105:E/AndroidRuntime(13843):位于com.example.careandcure.ListDataActivity$ProgressTask.doInBackground(ListDataActivity.java:149)
08-25 13:06:57.105:E/AndroidRuntime(13843):位于com.example.careandcure.ListDataActivity$ProgressTask.doInBackground(ListDataActivity.java:1)
08-25 13:06:57.105:E/AndroidRuntime(13843):在android.os.AsyncTask$2.call(AsyncTask.java:264)
08-25 13:06:57.105:E/AndroidRuntime(13843):在java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
我正在从以前的活动中获取字符串
类别名称
。 我需要将这个字符串解析为php,这样我就可以在字符串的基础上查询项目。。
试图通过添加parm来通过此方法,但出现错误。。thanx提前..

此sol os基于您的旧代码,即没有后参数的代码

好的,这是你需要做的

1-将categ声明为活动中的全局变量

String categ  = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
:
:
2-保留代码以按原样分配categ的值
categ=b.getString(“category_name”)

3-在
doInBackground()
,将新的参数类别名称连接到URL:

protected Boolean doInBackground(final String... args) {
      url = url + "?cat_name=" + categ;
:
:
:
4-在您的PHP页面(使用url调用的页面),读取参数
cat_name
,并使用它获取数据

:
:
$catName = $_GET['cat_name'];
:
:

如果我没说错的话,这就是你要找的。

url的价值来自哪里-在这里使用jParser.getJSONFromUrl(url)-您可以将类别名称传递到url中的php页面,http:..page.php?类别名称=..我想您还有更多问题!你如何写一个if(conMgr.getAct…在全局范围内?我的意思是不在方法或构造函数内…我从获取url的位置编辑并添加了baseAdapter活动..我不是说如何获取url内容,我是说如何获取名为url的变量的值,无论如何,您所要做的就是使用category将参数添加到url中,url=url+“&cat=”+category;--仅供参考,baseAdapter是类,它不是活动。哦,对不起…url是我的本地主机地址..我忘了在这里提到步骤3,注意?它丢失了,下面在logcat erro错误解析数据org.json.JSONException:php页面的字符0处输入结束有错误,请尝试使用web浏览器从PC调用它,传递与手机相同的cat_名称值,如果你修复了该页面,为了显示正确的JSON,你的手机代码将准备好一个问题,一旦我按下并再次传递,categ获取值,但只传递上一次的值..记录url以确保你发送的cat_名称,如果始终相同,你必须确保在pr上重新设置它以前的活动,在使用Bundle传递之前。。。
protected Boolean doInBackground(final String... args) {
      url = url + "?cat_name=" + categ;
:
:
:
:
:
$catName = $_GET['cat_name'];
:
: