2017-06-22 69 views
0

我正在加載一些json到一個列表視圖,並希望從列表中刪除項目點擊和從json刪除項目。刪除功能似乎正在工作。調用方法delete,點擊時刪除項目,調試顯示要刪除的項目。但是,在轉到其他活動並再次查看列表後,刪除的項目會回來。我究竟做錯了什麼?這是我的課程:json listview刪除不工作android studio

public class edit extends AppCompatActivity 
{ 

    public ListView pizzaList; 
    ListView addicList; 
    ArrayAdapter<String> arrayAdapter; 
    String appreciations; 
    String currentPizza; 
    ArrayList<String> list = new ArrayList<String>(); 
    private String name; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.edit_activity); 
     pizzaList = (ListView) findViewById(R.id.pizzas); 
     registerForContextMenu(pizzaList); 

     arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list); 
     pizzaList.setAdapter(arrayAdapter); 

     pizzaList.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       delete(view,position); 
       arrayAdapter.notifyDataSetChanged(); 
      } 
     }); 

     try { 
      FileManager fileManager = new FileManager(); 

      String str = fileManager.ReadFile(this); 

      if (str != null) { 
       JSONArray jarray = new JSONArray(str); 

       String outputText = ""; 

       for (int i = 0; i < jarray.length(); i++) { 
        JSONObject jsonObject = jarray.getJSONObject(i); 
        String pizzaName = jsonObject.getString("name"); 
        int price = jsonObject.getInt("price"); 

        outputText = outputText + " " + pizzaName + " " + " $" + price + "\n"; 

        appreciations = outputText; 
        list.add(appreciations); 

        arrayAdapter.notifyDataSetChanged(); 
        outputText = ""; 
       } 
      } else { 
       Toast to = Toast.makeText(getApplicationContext(), "No saved Pizzas", Toast.LENGTH_LONG); 
       to.show(); 
      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 

    public void delete(View view, int pos) 
    { 
     try { 
      FileManager fileManager = new FileManager(); 

      String str = fileManager.ReadFile(this); 

      if (str != null) 
      { 
       JSONArray jarray = new JSONArray(str); 

       JSONObject jsonObject = jarray.getJSONObject(pos); 

       jarray.remove(pos); 
       list.remove(pos); 
       arrayAdapter.notifyDataSetChanged(); 

       JSONArray jsArray = new JSONArray(jarray); 
       arrayAdapter.notifyDataSetChanged(); 

      } else { 
       Toast to = Toast.makeText(getApplicationContext(), "No saved Pizzas", Toast.LENGTH_LONG); 
       to.show(); 
      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 
} 
+0

你只是從Json值中刪除你正在存儲在本地和適配器,你沒有從FileManager中刪除,你可以添加你有問題的FileManager –

回答

0

您需要從數據庫中刪除該項目,對其使用異步請求,如volley或robospice。然後,在返回時不再發出請求,而是第二次使用存儲在緩存中的數據,並且僅在數據發生更改時再次發出請求。您可以在您的應用程序類中創建緩存邏輯,使其在整個應用程序中都可見。