Щелкните элементы ListView (Android), чтобы опубликовать их на удаленном школьном сервере mySQL. - PullRequest
0 голосов
/ 06 декабря 2011

У меня есть приложение, которое использует сканер штрих-кода Zxing для сканирования инвентарных активов (компьютеров, оборудования). Я могу вернуть штрих-код в текстовое поле.Затем я могу ввести больше данных для этого конкретного отсканированного актива в другие текстовые поля редактирования в форме (описание, модель, серийный номер).Ниже приведены кнопки для сохранения данных в моей БД SQLite в ListView в другом упражнении.Я хочу знать, могу ли я щелкнуть по одному из элементов в представлении списка и отправить его содержимое на сервер MySQL.Я, кажется, немного информации в Интернете (Google), но кто-нибудь знает какие-либо хорошие учебники или пошаговые руководства, которые могут мне помочь.

Спасибо,

Ответы [ 2 ]

1 голос
/ 06 декабря 2011

Чтобы достичь этого, вы обычно запускаете веб-сервис, который принимает данные из вашего приложения и вставляет их в базу данных MySQL. Вы можете написать веб-сервис на любом языке сценариев на стороне сервера, но в большинстве примеров используется PHP.

Для получения дополнительной информации, я бы посоветовал посмотреть на подобные вопросы:

Как подключиться к удаленной БД MySQL без веб-сервисов ...? (ANDROID)

Удаленные операции MySQL для Android с использованием веб-службы с php

Возможно, вы найдете Kumulos интересным, это инструмент, который я принимал участие в создании, который позволяет вам создавать подобные веб-сервисы и интегрировать их в ваши мобильные приложения.

0 голосов
/ 08 мая 2014

Мне удалось сделать это, передав выбранный элемент в onItemClick на основе некоторого кода, который я нашел в Интернете, надеюсь, это поможет любому, кто все еще пытается решить эту проблему

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;

import com.henga.beverage.JSONParser;



public class Songs extends Activity {
    ListView list;
    TextView ver;
    TextView name;
    TextView api;
    Button Btngetdata;

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



    //URL to get JSON Array
    private static String url = "http://api.learn2crack.com/android/jsonos/";

    //JSON Node Names 
    private static final String TAG_OS = "android";
    private static final String TAG_VER = "ver";
    private static final String TAG_NAME = "name";
    private static final String TAG_API = "api";

    JSONArray android = null;




    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);
        oslist = new ArrayList<HashMap<String, String>>();



        Btngetdata = (Button)findViewById(R.id.getdata);
        Btngetdata.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                 new JSONParse().execute();


            }
        });


    }



    private class JSONParse extends AsyncTask<String, String, JSONObject> {
         private ProgressDialog pDialog;
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
             ver = (TextView)findViewById(R.id.vers);
             name = (TextView)findViewById(R.id.name);
             api = (TextView)findViewById(R.id.api);
            pDialog = new ProgressDialog(Songs.this);
            pDialog.setMessage("Getting Data ...");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(true);
            pDialog.show();



        }

        @Override
        protected JSONObject doInBackground(String... args) {

            JSONParser jParser = new JSONParser();

            // Getting JSON from URL
            JSONObject json = jParser.getJSONFromUrl(url);
            return json;
        }
         @Override
         protected void onPostExecute(JSONObject json) {
             pDialog.dismiss();
             try {
                    // Getting JSON Array from URL
                    android = json.getJSONArray(TAG_OS);
                    for(int i = 0; i < android.length(); i++){
                    JSONObject c = android.getJSONObject(i);

                    // Storing  JSON item in a Variable
                    String ver = c.getString(TAG_VER);
                    String name = c.getString(TAG_NAME);
                    String api = c.getString(TAG_API);




                    // Adding value HashMap key => value


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

                    map.put(TAG_VER, ver);
                    map.put(TAG_NAME, name);
                    map.put(TAG_API, api);

                    oslist.add(map);
                    list=(ListView)findViewById(R.id.list);





                    ListAdapter adapter = new SimpleAdapter(Songs.this, oslist,
                            R.layout.list_songs,
                            new String[] { TAG_VER,TAG_NAME, TAG_API }, new int[] {
                                    R.id.vers,R.id.name, R.id.api});

                    list.setAdapter(adapter);
                    list.setOnItemClickListener(new AdapterView.OnItemClickListener() {

                        @Override
                        public void onItemClick(AdapterView<?> parent, View view,
                                                int position, long id) {
                            //pb.setVisibility(View.VISIBLE);

                            new MyAsyncTask().execute(oslist.get(+position).get("name"));
                            Toast.makeText(Songs.this, "You Clicked on "+oslist.get(+position).get("name"), Toast.LENGTH_SHORT).show();
                            startActivity(new Intent(Songs.this, Main.class));
                        }
                    });

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


         }
    }
                private class MyAsyncTask extends AsyncTask<String, Integer, Double>{

            @Override
            protected Double doInBackground(String... params) {
            // TODO Auto-generated method stub
            postData(params[0]);
            return null;
            }

            protected void onPostExecute(Double result){

            Toast.makeText(getApplicationContext(), "Vote sent", Toast.LENGTH_LONG).show();
            }


            public void postData(String valueIWantToSend) {
            // Create a new HttpClient and Post Header
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost("http://10.0.2.2/z/receiver.php");

            try {
            // Add your data
            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
            nameValuePairs.add(new BasicNameValuePair("myHttpData", valueIWantToSend));
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

            // Execute HTTP Post Request
            @SuppressWarnings("unused")
            HttpResponse response = httpclient.execute(httppost);

            } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
            } catch (IOException e) {
            // TODO Auto-generated catch block
            }
        }

}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...