Insert populated listview items to database in android using php

只愿长相守 提交于 2019-12-11 11:45:04

问题


Here i am populating a listview from database using php file..after fetching from database i want to add those to another table..here in my onclick of add button toast message is displaying respective name..but when i try to add the name to database in uploadImage() method,only the last name present in the listview is inserted to database irrespective of the name. How to insert the respective name when it is clicked. here is the list..

here is my code..

package info.androidhive.customlistviewvolley.adater;

    import info.androidhive.customlistviewvolley.R;
    import info.androidhive.customlistviewvolley.model.Movie;

    import java.util.HashMap;
    import java.util.List;

    import android.app.Activity;
    import android.app.ProgressDialog;
    import android.content.Context;
    import android.content.Intent;
    import android.os.AsyncTask;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;
    import android.widget.Toast;

    import com.android.volley.toolbox.ImageLoader;
    import com.android.volley.toolbox.NetworkImageView;

    public class CustomListAdapter extends BaseAdapter {
        private Activity activity;
        private LayoutInflater inflater;
        private List<Movie> movieItems;
        private Button add;
        private Movie m;
        private TextView editname;
        private TextView editurl;
        //private Button nano;

        public static final String KEY_FULL = "name";
        public static final String KEY_MOBILE = "url1";
        public static final String UPLOAD_URL = "http://oursite/micro1.php";

        public CustomListAdapter(Activity activity, List<Movie> movieItems) {
            this.activity = activity;
            this.movieItems = movieItems;
        }

        @Override
        public int getCount() {
            return movieItems.size();
        }

        @Override
        public Object getItem(int location) {
            return movieItems.get(location);
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

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

            if (inflater == null)
                inflater = (LayoutInflater) activity
                        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            if (convertView == null)
                convertView = inflater.inflate(R.layout.list_row, null);


            editname = (TextView) convertView.findViewById(R.id.fullname);
            editurl = (TextView) convertView.findViewById(R.id.mobile);
            add = (Button)convertView.findViewById(R.id.button);

             m = movieItems.get(position);

             editname.setText(m.getName());
             final  String  name =  m.getName();

            editurl.setText( m.getUrl());
            editurl.setVisibility(View.GONE);

            add.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    Toast.makeText(v.getContext(), "Name:"+name, Toast.LENGTH_SHORT).show();// displays exact name when add button is pressed in listview.
                    //uploadImage();

                    /*Intent intent = new Intent(v.getContext(), WebViewActivity.class);
                    intent.putExtra("Url",editurl.getText().toString() );
                    activity.startActivity(intent);*/


                }
            });

            return convertView;

        }

/*** if uploadImage() method is used..only the last data present in listview is inserted..**/
        /*public  void uploadImage(){
            final  String  name = m.getName();
            final String url1 =  m.getUrl();

            class UploadImage extends AsyncTask<Void,Void,String> {
                ProgressDialog loading;
                @Override
                protected void onPreExecute() {
                    super.onPreExecute();
                    loading = ProgressDialog.show(activity,"Please wait...","uploading",false,false);
                }

                @Override
                protected void onPostExecute(String s) {
                    super.onPostExecute(s);
                    loading.dismiss();
                    if(s.equalsIgnoreCase("Successfully Stored")){
                        //Intent intent = new Intent(activity,Insurance.class);
                        Toast.makeText(activity,s,Toast.LENGTH_SHORT).show();
                        //activity.startActivity(intent);
                    }else{
                        Toast.makeText(activity,s,Toast.LENGTH_SHORT).show();

                    }
                }

                @Override
                protected String doInBackground(Void... params) {

                    //RegisterUserClass rh = new RegisterUserClass();
                    RequestHandler rh = new RequestHandler();
                    HashMap<String,String> param = new HashMap<String,String>();

                    param.put(KEY_FULL,name);
                    param.put(KEY_MOBILE,url1);

                    String result = rh.sendPostRequest(UPLOAD_URL, param);
                    return result;
                }
            }
            UploadImage u = new UploadImage();
            u.execute();
        }*/

        }

MainActivity.java

package info.androidhive.customlistviewvolley;

import info.androidhive.customlistviewvolley.adater.CustomListAdapter;
import info.androidhive.customlistviewvolley.app.AppController;
import info.androidhive.customlistviewvolley.model.Movie;

import java.util.ArrayList;
import java.util.List;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.Activity;
import android.app.ProgressDialog;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.widget.Button;
import android.widget.ListView;

import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.VolleyLog;
import com.android.volley.toolbox.JsonArrayRequest;

public class MainActivity extends Activity {
    // Log tag
    private static final String TAG = MainActivity.class.getSimpleName();

    // Movies json url
    private static final String url = "http://oursite/dummi.php";
    private ProgressDialog pDialog;
    private List<Movie> movieList = new ArrayList<Movie>();
    private ListView listView;
    private CustomListAdapter adapter;

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

        listView = (ListView) findViewById(R.id.list);
        adapter = new CustomListAdapter(this, movieList);
        listView.setAdapter(adapter);
        //micro = ()

        pDialog = new ProgressDialog(this);
        // Showing progress dialog before making http request
        pDialog.setMessage("Loading...");
        pDialog.show();

        // changing action bar color
        getActionBar().setBackgroundDrawable(
                new ColorDrawable(Color.parseColor("#1b1b1b")));

        // Creating volley request obj
        JsonArrayRequest movieReq = new JsonArrayRequest(url,
                new Response.Listener<JSONArray>() {
                    @Override
                    public void onResponse(JSONArray response) {
                        Log.d(TAG, response.toString());
                        hidePDialog();

                        // Parsing json
                        for (int i = 0; i < response.length(); i++) {
                            try {

                                JSONObject obj = response.getJSONObject(i);
                                Movie movie = new Movie();
                                movie.setName(obj.getString("name"));
                                movie.setUrl( obj.getString("url1"));

                                movieList.add(movie);

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

                        }

                        // notifying list adapter about data changes
                        // so that it renders the list view with updated data
                        adapter.notifyDataSetChanged();
                    }
                }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        VolleyLog.d(TAG, "Error: " + error.getMessage());
                        hidePDialog();

                    }
                });

        // Adding request to request queue
        AppController.getInstance().addToRequestQueue(movieReq);
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        hidePDialog();
    }

    private void hidePDialog() {
        if (pDialog != null) {
            pDialog.dismiss();
            pDialog = null;
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

micro1.php

<?php
    session_start();
    define('HOST','localhost');
    define('USER','username');
    define('PASS','password');
    define('DB','dbname');

    $response = array();

    $con = mysqli_connect(HOST,USER,PASS,DB) or die('Unable to Connect');

    if(!mysqli_connect_errno()){

        $error_flag = false;

        $name= $_POST['name'];
        $url1= $_POST['url1'];


            $sql = "INSERT INTO micro (name, url1,  created_at)
            VALUES ('$name', '$url1', NOW())";
                if(mysqli_query($con,$sql)){

                    echo "Successfully Stored";

                }else{
                    $response["error"] = true;
                    $response["error_msg"] = "INSERT operation failed";
                    echo json_encode($response);
                }


    }else{
        $response["error"] = true;
        $response["error_msg"] = "Database connection failed";
        echo json_encode($response);
    }
?>

来源:https://stackoverflow.com/questions/36614889/insert-populated-listview-items-to-database-in-android-using-php

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!