如何使列表视图可点击并能够在单击的项目中删除



food.java

import java.util.ArrayList;
import java.util.HashMap;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.app.ListActivity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
//import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;

public class Drinks extends ListActivity 
    implements OnClickListener {
    // Progress Dialog
        private ProgressDialog pDialog;
    //testing on Emulator:
     private static final String READ_COMMENTS_URL = "http://10.0.2.2/pbda2/drinksordered.php";
    //my ip :192.168.43.176
     // url to delete product
     //   private static final String url_delete_product = "http://10.0.2.2/pbda2/delete_product.php";
     // private CheckBox chkFood, chkDrinks, chkServices;
      //private Button btnDisplay, chkClear, deliever, chkClearFood, fooddeliever, drinksdeliever, servicesdeliever, chkClearDrinks, chkClearServices;
      //private TextView clearThis,orderdisplay, clearThisFood, foodorderdisplay, drinksorderdisplay, servicesorderdisplay, clearThisDrinks, clearThisServices;
      private static final String TAG_SUCCESS = "success";
      private static final String TAG_POSTS = "posts";
        private static final String TAG_SEATNUMBER = "seatnumber";
        private static final String TAG_DRINKSORDERED = "drinksordered";
        //it's important to note that the message is both in the parent branch of 
        //our JSON tree that displays a "Post Available" or a "No Post Available" message,
        //and there is also a message for each individual post, listed under the "posts"
        //category, that displays what the user typed as their message.
      //An array of all of our comments
        private JSONArray mComments = null;
        //manages all of our comments in a list.
        private ArrayList<HashMap<String, String>> mCommentList;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.setContentView(R.layout.drinks);

        View v = findViewById(R.id.backmain);
        //set event listener
            v.setOnClickListener(this);
        View x= findViewById(R.id.foodbtn);
            //set event listener
                x.setOnClickListener(this);
                View y= findViewById(R.id.servicebtn);
                //set event listener
                    y.setOnClickListener(this);
    }
    @Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();
        //loading the comments via AsyncTask
        new LoadComments().execute();
    }

    /**
     * Retrieves recent post data from the server.
     */
    public void updateJSONdata() {
        // Instantiate the arraylist to contain all the JSON data.
        // we are going to use a bunch of key-value pairs, referring
        // to the json element name, and the content, for example,
        // message it the tag, and "I'm awesome" as the content..
        mCommentList = new ArrayList<HashMap<String, String>>();
        // Bro, it's time to power up the J parser 
        JSONParser jParser = new JSONParser();
        // Feed the beast our comments url, and it spits us
        //back a JSON object.  Boo-yeah Jerome.
        JSONObject json = jParser.getJSONFromUrl(READ_COMMENTS_URL);
        //when parsing JSON stuff, we should probably
        //try to catch any exceptions:
        try {
            //I know I said we would check if "Posts were Avail." (success==1)
            //before we tried to read the individual posts, but I lied...
            //mComments will tell us how many "posts" or comments are
            //available
            mComments = json.getJSONArray(TAG_POSTS);
            // looping through all posts according to the json object returned
            for (int i = 0; i < mComments.length(); i++) {
                JSONObject c = mComments.getJSONObject(i);
                //gets the content of each tag
                String seatnumber = c.getString(TAG_SEATNUMBER);
                String services = c.getString(TAG_DRINKSORDERED);

                // creating new HashMap
                HashMap<String, String> map = new HashMap<String, String>();
                map.put(TAG_SEATNUMBER, seatnumber);
                map.put(TAG_DRINKSORDERED, services);

                // adding HashList to ArrayList
                mCommentList.add(map);
                //annndddd, our JSON data is up to date same with our array list
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }




    @Override
            public void onClick(View arg0) {
        if(arg0.getId() == R.id.backmain){
            //define a new Intent for the second Activity
            Intent intent = new Intent(this,MainActivity.class);
            //start the second Activity
            this.startActivity(intent);
        }
            if(arg0.getId() == R.id.foodbtn){
                //define a new Intent for the second Activity
                Intent intent = new Intent(this,Food.class);
                //start the second Activity
                this.startActivity(intent);
            }
            if(arg0.getId() == R.id.servicebtn){
                //define a new Intent for the second Activity
                Intent intent = new Intent(this,Services.class);
                //start the second Activity
                this.startActivity(intent);
            }

    }
    /**
     * Inserts the parsed data into the listview.
     */
    private void updateList() {
        // For a ListActivity we need to set the List Adapter, and in order to do
        //that, we need to create a ListAdapter.  This SimpleAdapter,
        //will utilize our updated Hashmapped ArrayList, 
        //use our single_post xml template for each item in our list,
        //and place the appropriate info from the list to the
        //correct GUI id.  Order is important here.
        ListAdapter adapter = new SimpleAdapter(this, mCommentList,
                R.layout.single_post, new String[] { TAG_SEATNUMBER, TAG_DRINKSORDERED
                //TAG_DRINKSORDERED, TAG_SERVICES
                         }, new int[] { R.id.seatnumber, R.id.orders
                //R.id.drinkstv, R.id.servicestv,

         });
        // I shouldn't have to comment on this one:
        setListAdapter(adapter);
        // Optional: when the user clicks a list item we 
        //could do something.  However, we will choose
        //to do nothing...
        ListView lv = getListView();    
        lv.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                // This method is triggered if an item is click within our
                // list. For our example we won't be using this, but
                // it is useful to know in real life applications.
            }
        });
    }   


    public class LoadComments extends AsyncTask<Void, Void, Boolean> {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(Drinks.this);
            pDialog.setMessage("Loading orders...");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(true);
            pDialog.show();
        }
        @Override
        protected Boolean doInBackground(Void... arg0) {
            //we will develop this method in version 2
            updateJSONdata();
            return null;
        }

        @Override
        protected void onPostExecute(Boolean result) {
            super.onPostExecute(result);
            pDialog.dismiss();
          //we will develop this method in version 2
            updateList();
        }
    }

}

single_post.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="#f0f0f0"
    android:orientation="vertical" >
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:orientation="vertical" >
        <LinearLayout
            android:id="@+id/box"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="2dp"
            android:orientation="horizontal" >

            <LinearLayout
                android:id="@+id/box"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_margin="2dp"
                android:orientation="vertical"
                android:padding="5dp" >
                <TextView
                    android:id="@+id/seatnumber"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="bottom"
                    android:paddingBottom="2dip"
                    android:paddingLeft="5dp"
                    android:paddingTop="6dip"
                    android:textColor="#333"
                    android:textSize="16sp"
                    android:textStyle="bold" />

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal"
                    android:paddingBottom="5dp" >
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:gravity="left"
                        android:paddingLeft="5dp"
                        android:text="Order: "
                        android:textColor="#5d5d5d"
                        android:textStyle="bold" >
                    </TextView>
                    <TextView
                        android:id="@+id/orders"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:gravity="left"
                        android:textColor="#acacac"
                        android:textStyle="bold" >
                    </TextView>
                </LinearLayout>
            </LinearLayout>
        </LinearLayout>
    </LinearLayout>
</LinearLayout>

食物.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:android1="http://schemas.android.com/apk/res/android"
    android1:id="@+id/bg2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android1:background="#E0FFFF" >

    <Button
        android:id="@+id/servicebtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginLeft="358dp"
        android:layout_toRightOf="@+id/foodbutton"
        android:text="SERVICES" />
    <Button
        android1:id="@+id/drinksbtn"
        android1:layout_width="wrap_content"
        android1:layout_height="wrap_content"
        android1:layout_alignParentBottom="true"
        android1:layout_marginBottom="23dp"
        android1:layout_marginRight="24dp"
        android1:text="DRINKS ORDERS" />
    <LinearLayout
        android:id="@+id/top_layover"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:orientation="horizontal" >
        <TextView
            android1:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:gravity="center"
            android:text="@string/foodtitle"
            android:textAppearance="?android:attr/textAppearanceLarge" />
    </LinearLayout>
    <ListView
        android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/top_layover"
        android1:layout_alignBottom="@+id/servicesdelivered"
        android:background="#fff"
        android:divider="@android:color/transparent"
        android:scrollbars="none" />
    <LinearLayout
        android:id="@+id/bottom_layover"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:orientation="horizontal"
        android:weightSum="2" >
        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="vertical" >
        </LinearLayout>
        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.69"
            android:orientation="vertical" >
            <Button
                android1:id="@+id/backmain"
                android1:layout_width="wrap_content"
                android1:layout_height="wrap_content"
                android1:layout_gravity="right"
                android1:text="@string/backtomain" />
        </LinearLayout>
    </LinearLayout>
    <Button
        android1:id="@+id/servicesdelivered"
        android1:layout_width="wrap_content"
        android1:layout_height="wrap_content"
        android1:layout_above="@+id/drinksbtn"
        android1:layout_alignParentLeft="true"
        android1:layout_marginLeft="111dp"
        android1:text="@string/servicesdelivered"
        android1:visibility="invisible" />
</RelativeLayout>

我需要帮助使列表视图可单击,然后在单击该项目后,有一个弹出意图询问您是否要删除该项目。我在制作点击部分和删除代码时遇到困难。

你可以简单地使用它:

private void updateList() {

    ListView lv = getListView();
    ListAdapter adapter = new SimpleAdapter(this, mCommentList,
            R.layout.single_post, new String[] { TAG_SEATNUMBER, TAG_DRINKSORDERED
            //TAG_DRINKSORDERED, TAG_SERVICES
                     }, new int[] { R.id.seatnumber, R.id.orders
            //R.id.drinkstv, R.id.servicestv,

     });
    setListAdapter(adapter);
    lv.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public boolean onItemClick(AdapterView<?> arg0, View arg1,
                final int arg2, long arg3) {
            // TODO Auto-generated method stub
            AlertDialog.Builder alt = new AlertDialog.Builder(
                    YourActivityName.this,
                    android.R.style.Theme_DeviceDefault_Dialog);
            alt.setMessage("Are you sure want to delete this file??");
            alt.setPositiveButton("Yes",
                    new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog,
                                int which) {
                            // TODO Auto-generated method stub
                            mCommentList.remove(arg2);
                            adapter.notifyDataSetChanged();
                        }
                    });
            alt.setNegativeButton("No",
                    new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog,
                                int which) {
                            // TODO Auto-generated method stub
                            dialog.dismiss();
                        }
                    });
            AlertDialog dialog = alt.create();
            dialog.show();
            return true;
        }
    });
}   

listview 添加一个OnItemClickListener

listView.setOnItemClickListener(this);

在你OnItemClick使用adapter.remove(adapter.getItem(position))将其从listview中删除。最后使用类似 myDatabase.myRemoveMethod(adapter.getItem(position).getMyIDmethod())

@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
    adapter.remove(adapter.getItem(position));
    myDatabase.myRemoveMethod(adapter.getItem(position).getMyIDmethod());
}

相关内容

  • 没有找到相关文章

最新更新