删除按钮上的一个项目后如何Listview刷新在Android中的事件?

Ree*_*ena 1 android listview refresh

我想从Listview中删除一个项目,并在删除项目后一次刷新Listview.怎么可能?

我正在使用从数据库中使用JSON Parsing获取所有项目并在单击按钮时删除所选项目.从数据库中成功删除但Listview一次不刷新.怎么做?

我正在使用Json Parsing.不是本地数据库.

在这种情况下,如何在删除项目时刷新Listview?请指导我.提前致谢.

我的代码是Detail.java文件

public class Detail extends Activity {
    ListView lstDetail = null;
    /** String */
    String urlGetDetailData = null;

    /** Declare another variable for Listview */
    Adapter1 adapter1 = null;
    ArrayList<Detail> myList = new ArrayList<Detail>();
    /** Hashmap for ListView */
    ArrayList<HashMap<String, String>> dataList = null;

    /** JSON Node names */
    public static final String TAG_MEMBER_ID = "mem_id";
    public static final String TAG_ID = "id";
    public static final String TAG_USER_ID = "userid";
    public static final String TAG_STATUS = "Status";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        onCreateActivity(R.layout.detail);

        initializeWidgets();
    }

    private void initializeWidgets() {
        /** ListView */
        lstDetail = (ListView) findViewById(R.id.lstDetail);

        urlGetDetailData = "http://example.com/getdata.php?id="
                + strId;

        new GetDetailData().execute();
        myList.remove(position);
        Adapter1.this.notifyDataSetChanged();

    }

    /**
     * Async task class to get json by making HTTP call
     * */
    private class GetDetailData extends AsyncTask<Void, Void, Void> {
        JSONObject jsonobject;
        JSONArray jsonarray;

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        @Override
        protected Void doInBackground(Void... arg0) {
            dataList = new ArrayList<HashMap<String, String>>();
            // Retrieve JSON Objects from the given URL address
            jsonobject = JSONFunctions.getJSONfromURL(urlGetDetailData);

            try {
                // Locate the array name in JSON
                jsonarray = jsonobject.getJSONArray("data");

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

                    HashMap<String, String> map = new HashMap<String, String>();
                    jsonobject = jsonarray.getJSONObject(i);
                    // Retrive JSON Objects

                    map.put("mem_id", String.valueOf(jsonobject
                            .getString(TAG_MEMBER_ID)));
                    map.put("id",
                            jsonobject.getString(TAG_ID));

                    map.put("userid", jsonobject.getString(TAG_USER_ID));
                    map.put("Status", jsonobject.getString(TAG_STATUS));

                    dataList.add(map);
                }
            } catch (JSONException e) {
                Log.e("Error", e.getMessage());
                e.printStackTrace();
            }

            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            super.onPostExecute(result);
            if (dataList.size() != 0) {
                lstDetail.setVisibility(View.VISIBLE);
                Adapter1 = new Adapter1(Detail.this,
                        dataList);
                lstDetail.setAdapter(Adapter1);
            } else {
                lstDetail.setVisibility(View.GONE);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Adapter类是Adapter1.java文件

public class Adapter1 extends BaseAdapter {
    public ArrayList<HashMap<String, String>> arrData = null;
    Context context = null;
    LayoutInflater layoutInflater = null;
    HashMap<String, String> getDetailData = new HashMap<String, String>();

    /** String */
    String strMemberId = null, urlDelete = null;

    /** Constructor */
    public Adapter1(Context context,
            ArrayList<HashMap<String, String>> arrData) {
        layoutInflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        this.context = context;
        this.arrData  = arrData;
    }

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

    @Override
    public Object getItem(int position) {
        return arrData.get(position);
    }

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

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        ViewHolder viewHolder = null;
        if (convertView == null) {
            convertView = layoutInflater.inflate(
                    R.layout.list_item, null);

            viewHolder = new ViewHolder();
            getData = arrData.get(position);

            /** Initialize Widgets */

            viewHolder.imgCancel = (ImageView) convertView
                    .findViewById(R.id.imgCancel);

            viewHolder.imgCancel
                    .setOnClickListener(new OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            strMemberId = arrData.get(
                                    position).get(
                                    Detail.TAG_MEMBER_ID);
                            urlDelete = "http://example.com/delete.php?mem_id="
                                    + strMemberId;
                            new DeleteComments().execute();
                        }
                    });

            /** TextView */
            viewHolder.txtMemberId = (TextView) convertView
                    .findViewById(R.id.txtMemberId);
            viewHolder.txtId = (TextView) convertView
                    .findViewById(R.id.txtId);

            viewHolder.txtDesc = (TextView) convertView
                    .findViewById(R.id.txtDesc);

            /** Set Value */


            viewHolder.txtMemberId.setText(getDetailData 
                    .get(Detail.TAG_MEMBER_ID));
            viewHolder.txtId.setText(getDetailData
                    .get(Detail.TAG_ID));

            viewHolder.txtDesc.setText(getDetailData
                    .get(Detail.TAG_STATUS));

            convertView.setTag(viewHolder);

        } else {
            viewHolder = (ViewHolder) convertView.getTag();
        }
        return convertView;
    }

    /** ViewHolder Class */
    @SuppressLint("NewApi")
    public static class ViewHolder {
        ImageView imgCancel = null;
        TextView txtMemberId = null, txtId = null,txtDesc = null;
    }

    public class DeleteComments extends AsyncTask<Void, Void, Void> {
        protected void onPreExecute() {
            super.onPreExecute();
        }

        @Override
        protected Void doInBackground(Void... arg0) {
            ServiceHandler sh = new ServiceHandler();
            String jsonStr = sh.makeServiceCall(urlDelete,
                    ServiceHandler.GET);
            Log.d("Response : delete join comments", ">" + jsonStr);

            return null;
        }

        protected void onPostExecute(Void result) {
            super.onPostExecute(result);

        };
    }
}
Run Code Online (Sandbox Code Playgroud)

detail.xml文件是,

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/re/android"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content" >

    <ListView
        android:id="@+id/lstDetail"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >
    </ListView>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

list_item.xml文件是,

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/re/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >

    <LinearLayout
        android:id="@+id/contentLayout"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/txtId"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="111" />

        <TextView
            android:id="@+id/txtDesc"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />
    </LinearLayout>

    <ImageView
        android:id="@+id/imgCancel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:src="@drawable/cancel" />

    <TextView
        android:id="@+id/txtMemberId"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/txtUserEventId"
        android:layout_alignBottom="@+id/txtUserEventId"
        android:layout_alignParentLeft="true"
        android:text="222" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

And*_*oob 5

在您this.notifyDataSetChanged();执行删除功能的自定义适配器调用中,并从设置为该适配器的arrayList中删除该元素