Je travaille sur un projet qui permet à l'utilisateur d'envoyer une chaîne d'une activité à une vue de liste dans une autre activité avec un bouton. Cependant, lorsque j'essaie d'envoyer des données d'une activité à la suivante, l'activité de réception remplace le dernier élément envoyé au lieu de l'ajouter à la vue de liste. Voici mon code: EnterInfoActivity.java:Ajouter une chaîne à ListView d'activité différente ne remplace que le premier élément au lieu d'en ajouter plus à la liste
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;
import static com.example.kevin.myapplication.R.id.Done;
import static com.example.kevin.myapplication.R.id.EnterInfo;
public class EnterInfoActivity extends AppCompatActivity {
ArrayAdapter<CharSequence> yearAdapter;
Button Done;
EditText Name;
EditText PName;
Spinner YearSpinner;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_enter_info);
Name = (EditText) findViewById(R.id.Name);
PName = (EditText) findViewById(R.id.PName);
Done = (Button) findViewById(R.id.Done);
YearSpinner = (Spinner) findViewById(R.id.Year);
yearAdapter = ArrayAdapter.createFromResource(this,R.array.year_sequence, android.R.layout.simple_spinner_item);
yearAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
YearSpinner.setAdapter(yearAdapter);
Done.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences sharedPreferences = getSharedPreferences("ViewData", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("newName", Name.getText().toString());
editor.putString("newPName", PName.getText().toString());
editor.putString("Year", YearSpinner.getSelectedItem().toString());
editor.commit();
finish();
}
});
}
}
et Heres ViewActivity.java:
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.ListViewCompat;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import java.util.ArrayList;
public class ViewActivity extends AppCompatActivity {
ListView lv;
ArrayList<String> arrayList;
ArrayAdapter<String> adapter;
public static final String DEFAULT = " ";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view);
SharedPreferences sharedPreferences = getSharedPreferences("ViewData", Context.MODE_PRIVATE);
String Name = sharedPreferences.getString("newName",DEFAULT);
String PName = sharedPreferences.getString("newPName",DEFAULT);
String Year = sharedPreferences.getString("Year",DEFAULT);
String PhotoInfo =(Name + " " + PName + " " + Year);
lv = (ListView) findViewById(R.id.LV_View);
arrayList = new ArrayList<String>();
arrayList.add(PhotoInfo);
adapter = new ArrayAdapter<String>(ViewActivity.this, android.R.layout.simple_list_item_1,
arrayList);
lv.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
}
Vous na pas passer une liste que vous avez passé seulement trois et je n'ont combiné dans votre chaîne PhotoInfo – Xenolion
lecture sur une application Android Cycle de vie: OnCreate - onStart - onResume ... Par la suite, je vous suggère de utiliser un 'BroadcastReceiver' pour envoyer de manière fiable des données à d'autres activités – rupps