2016-01-07 2 views
1

Имеет listView и добавить button в Деятельность A. Данные listView извлекаются из MySQL.Добавить новый список в списокView

[! [http://i.stack.imgur.com/wVmSK.png][1]][1]

Когда список будет нажата, она будет передавать данные на активность B, если добавить button щелчке, она будет идти на активность B для пользователя, чтобы добавить данные. Я использую mClickedPosition для того, чтобы отличить, было ли нажато list или button.

активность

ListView listViewUpdate; 
    ListAdapter adapter; 
    Button add; 
    String ID, iD; 
    public static final int PROJECT_REQUEST_CODE = 1; 
    public static final int CAMERA_REQUEST_CODE = 2; 
    int mClickedPosition; 
    String ReceiveProject, ReceiveDescription, ReceiveTimeIn, ReceiveTimeOut; 
    Integer ReceiveProgress; 
    ArrayList<DetailsBean> results = new ArrayList<DetailsBean>(); 
    String myJSON; 
    JSONArray details = null; 
    ArrayList<HashMap<String, String>> EditDetails; 

    listViewUpdate.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
       @Override 
       public void onItemClick(AdapterView<?> listView, View view, 
             int position, long id) { 
        mClickedPosition = position; // listView click 
        HashMap<String, String> clickedItem = EditDetails.get(position); 
        iD = clickedItem.get(Configs.TAG_ID); 
        Intent intent = new Intent(getActivity(), Edit_Details.class); 
        intent.putExtra("iD", iD); 
        intent.putExtra("ID", ID); 
        intent.putExtra("mClickedPosition",mClickedPosition); 
        //Toast.makeText(getActivity(),"This is"+iD+ID,Toast.LENGTH_LONG).show(); 
        startActivityForResult(intent, PROJECT_REQUEST_CODE); 

       } 
      }); 


      add.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        mClickedPosition = -1; // if button clicked 
        Intent intent = new Intent(getActivity(), Edit_Details.class); 
        intent.putExtra("ID", ID); 
        startActivity(intent); 
       } 

      }); 

Предположим, пользователь нажимает добавить button. (MClickedposition == - 1)

активность B

Когда сохранить button нажата, данные вставляются в MySQL с mClickedPosition == - 1 После этого я nt новые данные возвращаются к Activity A и добавляют новый список в A, что означает, что у Activity A должно быть 2 списка. Как я могу это достичь?

save.setOnClickListener(new View.OnClickListener() {  // if save button clicked 
      @Override 
      public void onClick(View v) { 
       Intent returnIntent = new Intent(); 
       project1 = Project2.getSelectedItem().toString(); 
       description = Description.getText().toString(); 
       progress = seekBar.getProgress(); 
       timeIn = TimeIn.getText().toString(); 
       timeOut = TimeOut.getText().toString(); 
       if(mClickedPosition==-1) 
       { 
        Add(project1,description,progress,timeIn,timeOut); 
       } 
       else 
       { 
        Update(project1, description, progress, timeIn, timeOut); 
       } 
       returnIntent.putExtra("project1", project1); 
       returnIntent.putExtra("description", description); 
       returnIntent.putExtra("progress", progress); 
       returnIntent.putExtra("timeIn", timeIn); 
       returnIntent.putExtra("timeOut", timeOut); 
       setResult(Activity.RESULT_OK, returnIntent); 
       finish(); 

      } 
     }); 

активность onActivityResult

@Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { // receive from Activity B and populate ListView A 
     if (resultCode == Activity.RESULT_OK) { 
      if (requestCode == PROJECT_REQUEST_CODE) { 
       ReceiveProject = data.getStringExtra("project1"); 
       ReceiveDescription = data.getStringExtra("description"); 
       ReceiveProgress = data.getIntExtra("progress", 0); 
       ReceiveTimeIn = data.getStringExtra("timeIn"); 
       ReceiveTimeOut = data.getStringExtra("timeOut"); 


       Toast.makeText(getActivity(),ReceiveProject+ReceiveDescription+ReceiveProgress+ReceiveTimeIn+ReceiveTimeOut,Toast.LENGTH_LONG).show(); 
       if(mClickedPosition==-1) 
       { // add list 
        HashMap<String, String> clickedItem = new HashMap<>(); 
        clickedItem.put(Configs.TAG_PROJECT, ReceiveProject); 
        clickedItem.put(Configs.TAG_WORKDESCRIPTION, ReceiveDescription); 
        clickedItem.put(Configs.TAG_PERCENTAGE, ReceiveProgress + ""); 
        clickedItem.put(Configs.TAG_IN, ReceiveTimeIn); 
        clickedItem.put(Configs.TAG_OUT, ReceiveTimeOut); 
        EditDetails.add(clickedItem); 
        ((BaseAdapter) adapter).notifyDataSetChanged(); 

       } 
       else 
       { // update list 
        HashMap<String, String> clickedItem =EditDetails.get(mClickedPosition); 
        clickedItem.put(Configs.TAG_PROJECT, ReceiveProject); 
        clickedItem.put(Configs.TAG_WORKDESCRIPTION, ReceiveDescription); 
        clickedItem.put(Configs.TAG_PERCENTAGE, ReceiveProgress + ""); 
        clickedItem.put(Configs.TAG_IN, ReceiveTimeIn); 
        clickedItem.put(Configs.TAG_OUT, ReceiveTimeOut); 
        ((BaseAdapter) adapter).notifyDataSetChanged(); 
       } 
       //((BaseAdapter) adapter).notifyDataSetChanged(); 
      } 
      } 
    } 
    } 

Теперь я могу видеть новый список, добавленный в деятельности А. Но когда я нажимаю на новый список и перейти к деятельности B, нет данных прошло. Но если я нажму старый список, я могу видеть данные прошли ...

+0

почему вы используете два адаптера? Адаптер ListAdapter; CustomBaseAdapter obj ;? –

+0

Какой адаптер вы устанавливаете в ListView? –

+0

@SanjeetAjnabee Я удалил CustomBaseAdapter – Tony

ответ

1

Вам нужно добавить или обновить новые данные в списке, а затем вызвать notifiDataSetChanged(); Изменение кода в onActivity методе результат вашей деятельности А как

ценам ниже
   HashMap<String, String> item =  new HashMap<>(); 
       item.put(Configs.TAG_PROJECT, ReceiveProject); 
       item.put(Configs.TAG_WORKDESCRIPTION, ReceiveDescription); 
       item.put(Configs.TAG_PERCENTAGE, ReceiveProgress + ""); 
       item.put(Configs.TAG_IN, ReceiveTimeIn); 
       item.put(Configs.TAG_OUT, ReceiveTimeOut); 

       if(mClickedPosition==-1) 
       { // add list 
        EditDetails.add(item); 

       } 
       else 
       { // update list 
        EditDetails.remove(mClickedPosition); 
        mEventsList.add(mClickedPosition,item) 
       } 
       ((BaseAdapter) adapter).notifyDataSetChanged(); 
+0

'HashMap item = new HashMap <>(); 'put after 'ReceiveTimeOut = data.getStringExtra (" timeOut ");'? – Tony

+0

Да, эти значения необходимо использовать перед добавлением в список na. –

+0

'EditDetails.remove (mClickedPosition);' и ' mEventsList.add (mClickedPosition, item) 'for? – Tony

Смежные вопросы