There is a listView with an adapter. Data is obtained from php + mysql. Is it possible to implement the removal of an object from the ListView. The answers found on the Internet could not realize this (in my case) java-Class

public class InfoActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { private ListView lvOrders; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_info); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); ActionBarDrawerToggle toggle = new ActionBarDrawerToggle( this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); drawer.setDrawerListener(toggle); toggle.syncState(); NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); navigationView.setNavigationItemSelectedListener(this); lvOrders = (ListView)findViewById(R.id.lvOrders); DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder() .cacheInMemory(true) .cacheOnDisk(true) .build(); ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext()) .defaultDisplayImageOptions(defaultOptions) .build(); ImageLoader.getInstance().init(config); public class JSONTask extends AsyncTask<String,String,List<OrderModel>> { @Override protected List<OrderModel> doInBackground(String... params) { HttpURLConnection connection = null; BufferedReader reader = null; try { URL url = new URL(params[0]); connection = (HttpURLConnection) url.openConnection(); connection.connect(); InputStream stream = connection.getInputStream(); reader = new BufferedReader(new InputStreamReader(stream)); StringBuffer buffer = new StringBuffer(); String line=""; while ((line = reader.readLine()) != null){ buffer.append(line); } String finalJson = buffer.toString(); JSONObject parentObject = new JSONObject(finalJson); JSONArray parentArray = parentObject.getJSONArray("orders"); List<OrderModel> orderModelList = new ArrayList<>(); for (int i=0;i<parentArray.length();i++){ JSONObject finalObject = parentArray.getJSONObject(i); OrderModel orderModel = new OrderModel(); orderModel.setId_order_desc(finalObject.getInt("id_order_desc")); orderModel.setId_quantity(finalObject.getInt("id_quantity")); orderModel.setId_date_start(finalObject.getString("id_date_start")); orderModel.setId_date_finish(finalObject.getString("id_date_finish")); orderModel.setEmail(finalObject.getString("email")); orderModel.setImage(finalObject.getString("image")); orderModel.setType_print(finalObject.getString("type_print")); orderModel.setType_color(finalObject.getString("type_color")); orderModel.setType_pay(finalObject.getString("type_pay")); orderModelList.add(orderModel); } return orderModelList; } catch (MalformedURLException e){ e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (JSONException e) { e.printStackTrace(); } finally { if (connection != null) { connection.disconnect(); } try { if( reader != null) { reader.close(); } } catch (IOException e) { e.printStackTrace(); } } return null; } @Override protected void onPostExecute(List<OrderModel> result) { super.onPostExecute(result); final OrderAdapter orderAdapter = new OrderAdapter(getApplicationContext(), R.layout.row, result); lvOrders.setAdapter(orderAdapter); } } public class OrderAdapter extends ArrayAdapter { private List<OrderModel> orderModelList; private int resource; private LayoutInflater inflater; public OrderAdapter(Context context, int resource, List<OrderModel> objects) { super(context, resource, objects); orderModelList = objects; this.resource = resource; inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE); } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = inflater.inflate(resource, null); } ImageView ivOrderIcon; TextView tvId; TextView tvEmail; TextView tvPrint; TextView tvColor; TextView tvPay; TextView tvQuantity; TextView tvDS; TextView tvDF; ivOrderIcon = (ImageView)convertView.findViewById(R.id.ivIcon); tvId = (TextView) convertView.findViewById(R.id.tvId); tvEmail = (TextView) convertView.findViewById(R.id.tvEmail); tvPrint = (TextView) convertView.findViewById(R.id.tvPrint); tvColor = (TextView) convertView.findViewById(R.id.tvColor); tvPay = (TextView) convertView.findViewById(R.id.tvPay); tvQuantity = (TextView) convertView.findViewById(R.id.tvQuantity); tvDS = (TextView) convertView.findViewById(R.id.tvDS); tvDF = (TextView) convertView.findViewById(R.id.tvDF); if (orderModelList.get(position).getImage().contains("http")){ ImageLoader.getInstance().displayImage(orderModelList.get(position).getImage(), ivOrderIcon); } else { ImageLoader.getInstance().displayImage(imgPath + orderModelList.get(position).getImage(), ivOrderIcon); } tvId.setText("ID: " + orderModelList.get(position).getId_order_desc()); tvEmail.setText("Email: " + orderModelList.get(position).getEmail()); tvPrint.setText("Type Print: " + orderModelList.get(position).getType_print()); tvColor.setText("Type Color: " + orderModelList.get(position).getType_color()); tvPay.setText("Type Pay: " + orderModelList.get(position).getType_pay()); tvQuantity.setText("Quantity: " + orderModelList.get(position).getId_quantity()); tvDS.setText("Date Start: " + orderModelList.get(position).getId_date_start()); tvDF.setText("Date Finish: " + orderModelList.get(position).getId_date_finish()); return convertView; } } } 

One of the methods found on the Internet, I could not check:

  ImageButton deleteBtn = (ImageButton) findViewById(R.id.deleteBtn); deleteBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String item = lvOrders.getItemAtPosition(0).toString(); orderAdapter.remove(item); orderAdapter.notifyDataSetChanged(); } }); 

For the reason that I have no idea where to write it. As when inserting into onPostExecute / onCreate, it gives the following error:

 java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageButton.setOnClickListener(android.view.View$OnClickListener)' on a null object reference at com.example.runkdown.db_02.InfoActivity$JSONTask.onPostExecute(InfoActivity.java:226) at com.example.runkdown.db_02.InfoActivity$JSONTask.onPostExecute(InfoActivity.java:156) at android.os.AsyncTask.finish(AsyncTask.java:636) at android.os.AsyncTask.access$500(AsyncTask.java:177) at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:653) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5310) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699) at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:115) 

    1 answer 1

    1. Your data you need to store in a variable activit.
    2. At the right moment you need to remove an element from them.
    3. After this notify the adapter