Простой Android-приложение Todo с mlab не добавлять и не редактировать - PullRequest
0 голосов
/ 13 декабря 2018

Я создал приложение с Android Studio и подключил его к mLab, приложение представляет собой простой список задач (ToDo App).Я прекрасно вижу записи базы данных mLab.Проблема в том, что я не могу редактировать или создавать новые записи.Удаление работает идеально, если я удаляю их, они удаляются из приложения и mLab.Я не вижу видимой ошибки.Кто-нибудь может помочь мне обнаружить ошибку?

я оставляю здесь репо из моего проекта TodoApp

MainActivity.java

public class MainActivity extends AppCompatActivity {


ListView lstViewItems;
Button btnAdd, btnEdit, btnDelete;
EditText edtItem;
item itemSelected=null;
List<item> items = new ArrayList<item>();


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    lstViewItems = (ListView)findViewById(R.id.lstView);
    btnAdd = (Button)findViewById(R.id.btnAddItem);
    btnEdit = (Button)findViewById(R.id.btnEdit);
    btnDelete = (Button)findViewById(R.id.btnDelete);
    edtItem = (EditText) findViewById(R.id.edtItem);

    //LOAD DATA WHEN APP OPENED
    new GetData().execute(Common.getAddressAPI());

    lstViewItems.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
           itemSelected = items.get(position);
           //SET TEXT TO EDIT TEXT
            edtItem.setText(itemSelected.getItem());
        }
    });



    //ADD EVENT TO BUTTON

    btnAdd.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){
            new PostData(edtItem.getText().toString()).execute(Common.getAddressAPI());
        }
    });
//BECAUSE THIS FUNCTION WE NEED PARAMETER ITEMSELECTED, SO WE NEED SET ITEMSELECTED
    //WHEN USER CLICK ON ITEM IN LISTVIEW
    btnEdit.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){

        }
    });

    btnDelete.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){
            new DeleteData(itemSelected).execute(Common.getAddressSingle(itemSelected));

        }

    });



}

//FUNCTION PROCESS DATA
class GetData extends AsyncTask<String, Void, String>{
    ProgressDialog pd = new ProgressDialog(MainActivity.this);

    @Override
    protected void onPreExecute(){
        super.onPreExecute();
        //Pre process
        pd.setTitle("Please wait...");
        pd.show();
    }

    @Override
    protected String doInBackground(String... params){
        // RUNNING PROCCESS..
        String stream = null;
        String urlString = params[0];

        HTTPDataHandler http = new HTTPDataHandler();
        stream = http.GetHTTPData(urlString);
        return stream;
    }

    @Override
    protected void onPostExecute(String s){
        super.onPostExecute(s);
        //Done process
        //WE WILL USE GSON TO PARSE JSON TO CLASS
        Gson gson = new Gson();
        Type listType = new TypeToken<List<item>>(){}.getType();
        items=gson.fromJson(s,listType); // PARSE TO LIST
        CustomAdapter adapter = new CustomAdapter(getApplicationContext(),items); // CREATE ADAPTER
        lstViewItems.setAdapter(adapter); // SET ADAPTER TO LIST VIEW
        pd.dismiss();
    }
}



// FUNCTION TO ADD NEW ITEM
class PostData extends AsyncTask<String,String,String> {
    ProgressDialog pd = new ProgressDialog(MainActivity.this);
    String item;

    public PostData(String item){
        this.item = item;
    }



    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        pd.setTitle("Please wait...");
        pd.show();
    }

    @Override
    protected String doInBackground(String... params) {
        String urlString = params[0];

        HTTPDataHandler hh = new HTTPDataHandler();
        String json="(\"item\":\""+item+"\")";
        hh.PostHTTPData(urlString,json);
        return "";
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);


        //REFRESH DATA
        new GetData().execute(Common.getAddressAPI());
        pd.dismiss();
    }
}


// FUNCTION TO EDIT ITEM
class PutData extends AsyncTask<String,String,String> {
    ProgressDialog pd = new ProgressDialog(MainActivity.this);
    String item;

    public PutData(String item){
        this.item = item;
    }



    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        pd.setTitle("Please wait...");
        pd.show();
    }

    @Override
    protected String doInBackground(String... params) {
        String urlString = params[0];

        HTTPDataHandler hh = new HTTPDataHandler();
        String json="(\"item\":\""+item+"\")";
        hh.PutHTTPData(urlString,json);
        return "";
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);


        //REFRESH DATA
        new GetData().execute(Common.getAddressAPI());
        pd.dismiss();
    }
}

// FUNCTION TO DELETE ITEM
class DeleteData extends AsyncTask<String,String,String> {
    ProgressDialog pd = new ProgressDialog(MainActivity.this);
    item item;

    public DeleteData(item item){
        this.item = item;
    }



    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        pd.setTitle("Please wait...");
        pd.show();
    }

    @Override
    protected String doInBackground(String... params) {
        String urlString = params[0];

        HTTPDataHandler hh = new HTTPDataHandler();
        String json="(\"item\":\""+item.getItem()+"\")";
        hh.DeleteHTTPData(urlString,json);
        return "";
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);


        //REFRESH DATA
        new GetData().execute(Common.getAddressAPI());
        pd.dismiss();
    }
}

}

}

1 Ответ

0 голосов
/ 13 декабря 2018

Первая ошибка заключается в том, что вы отправляете неверный формат json, поэтому вам нужно изменить его на правильный формат, во-вторых, вы индексируете переменную id, но не отправляете ее.измените переменную json в методе post на:

String json = "{'item' :'" + item + "', 'id' : '"+ UUID.randomUUID().toString() +"'}";
...