0

json リクエストから受け取ったデータ要素から、このリストビデオをこのように設定しました。ここでよくわからないのは、長いクリックでこのリストビューからリストアイテムを削除する方法です。

これは、リストビューに入力するバックグラウンド アクティビティです。

class readNotifications extends AsyncTask<String, String, String>{
        ;
        @Override
        protected String doInBackground(String... params) {
            // TODO Auto-generatNameValuePairb
            List<NameValuePair>param=new ArrayList<NameValuePair>();
            param.add(new BasicNameValuePair("id",SaveSharedPreference.getUserId(Notifications.this))); //SaveSharedPreference.getUserId(Notifications.this)

            JSONObject json=jsonParser.makeHttpRequest(url_notifications, "POST", param);
            Log.d("My Notifications", json.toString());

            try {

                JSONArray array = json.getJSONArray("notifications");
                Log.d("Notifications length",Integer.toString(array.length()));
                //if(array.length()==0)
                    //Log.d("Messages?","No Messages");
                if(array.length()>0){
                for (int i = 0; i < array.length(); i++) {
                   // Log.i("name", array.getJSONObject(i).getString("name"));
                    JSONObject c = array.getJSONObject(i);

                    // Storing each json item in variable
                    String id = c.getString("notification_id");
                    String message = c.getString("message");

                    //Log.i("picture_url", picture);
                    // creating new HashMap
                    HashMap<String, String> map = new HashMap<String, String>();

                    // adding each child node to HashMap key => value
                    map.put("notification_id", id);
                    map.put("message", message);


                    // adding HashList to ArrayList
                    notifications.add(map);
                }
                }else{
                     runOnUiThread(new Runnable() {
                            public void run() {
                    TextView tx=(TextView)findViewById(R.id.nonotifications);
                    tx.setVisibility(0);
                            }
                     });
                    //Log.d("Notifications length",Integer.toString(array.length()));
                }
            }catch (Exception e) {
                e.printStackTrace();
            }
                return null;
            }
        protected void onPostExecute(String file_url) {
            // dismiss the dialog after getting all products

            // updating UI from Background Thread
            runOnUiThread(new Runnable() {
                public void run() {

                    ListAdapter adapter = new SimpleAdapter(
                            Notifications.this, notifications,
                            R.layout.notifications, new String[] { "notification_id","message"},
                            new int[] { R.id.pid, R.id.notification});
                    // updating listview
                    setListAdapter(adapter);
                }
            });

        }

    }

    class deleteNotification extends AsyncTask<String, String, String>{
        String theirId=((TextView) findViewById(R.id.pid)).getText().toString();
        @Override
        protected String doInBackground(String... params) {
            // TODO Auto-generatNameValuePairb
            List<NameValuePair>param=new ArrayList<NameValuePair>();
            param.add(new BasicNameValuePair("id",SaveSharedPreference.getUserId(Notifications.this))); //SaveSharedPreference.getUserId(Notifications.this)
            param.add(new BasicNameValuePair("nid",notiId));
            JSONObject json=jsonParser.makeHttpRequest(url_delete_notification, "POST", param);
            Log.d("Their Id", theirId );
            Log.d("My Notifications", json.toString());


                return null;
            }
        protected void onPostExecute(String file_url) {
            // dismiss the dialog after getting all products

            // updating UI from Background Thread
            runOnUiThread(new Runnable() {
                public void run() {
            //new readNotifications().execute();
                }
            });

        }

    }

これが私が行った longclicklistener の始まりです。

ListView lv= getListView();
        registerForContextMenu(lv);
        lv.setOnItemLongClickListener(new OnItemLongClickListener() {

            public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                    int pos, long id)

ええ、リストビューからアイテムを削除する方法がわかりません。

4

2 に答える 2

1

リスト アダプターからアイテムを削除し、notifyDataSetChanged() を呼び出します。

プレーンな ListAdapter には remove メソッドがなく、SimpleAdapter が何を拡張するかはわかりませんが、ArrayAdapter には remove メソッドがあり、独自のメソッドを BaseAdapter に追加できます。

ところで、ListAdapter を作成する簡単な方法が必要な場合は、これが役立つ場合があります (ArrayAdapter または使用しているものの代わりに SilkAdapter を拡張するクラスを作成します): https://github.com/afollestad/Silk/blob/master/ src/com/afollestad/silk/adapters/SilkAdapter.java

于 2013-07-22T20:18:36.190 に答える
0

ここでよくわからないのは、長いクリックでこのリストビューからリストアイテムを削除する方法です。

データセットからアイテムを削除notifyDataSetChangedし、ListViewsアダプターを呼び出すだけです。

lv.setOnItemLongClickListener(new OnItemLongClickListener() {

   public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int pos, long id){
          notifications.remove(pos);
          adapter.notifyDataSetChanged();
}
于 2013-07-22T20:19:44.023 に答える