сценарий:Добавление элементов в ListView из другой деятельности
Первого mainactivity катер и от пользователя опции меню запускает вторую активность с помощью намерения и там он добавляет некоторый текст EditText и получить, что значение EditText используя намерение первого действие и добавьте это значение в список.
FirstActivity:
public class MainActivity extends Activity {
ListView lv;
EditText et;
String AddedTask ;
ArrayList<Model> modelList;
CustomAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent intent = getIntent();
if (intent.hasExtra("NewTask")) {
AddedTask = this.getIntent().getExtras().getString("NewTask");
lv = (ListView) findViewById(R.id.listViewData);
String name = AddedTask;
Model md = new Model(name);
modelList.add(md);
adapter = new CustomAdapter(getApplicationContext(), modelList);
lv.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar actions click
switch (item.getItemId()) {
case R.id.action_settings:
return true;
case R.id.action_add_task:
Intent i = new Intent(MainActivity.this, AddTask.class);
startActivity(i);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}
Вторая активность:
public class AddTask extends Activity {
Button addtask;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.add_task);
// get action bar
ActionBar actionBar = getActionBar();
// Enabling Up/Back navigation
actionBar.setDisplayHomeAsUpEnabled(true);
addtask = (Button) findViewById(R.id.btnaddlist);
findViewById(R.id.btnaddlist).setOnClickListener(
new View.OnClickListener() {
public void onClick(View arg0) {
EditText edit = (EditText) findViewById(R.id.tskname);
Intent i = new Intent(AddTask.this,
MainActivity.class);
//Bundle bundle = new Bundle();
String TaskName = edit.getText().toString();
//bundle.putString("NewTask", TaskName);
i.putExtra("NewTask", TaskName);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
//i.putExtras(bundle);
startActivity(i);
}
});
}
}
Теперь моя проблема я могу добавить данные в ListView, но каждый раз, когда я возвращаюсь к mainactivity предыдущих данных, которые была потеряна и обновлена старые данные с моими новыми данными.
Я искал ответы на многие ответы, и большинство из них предлагает добавить adapter.notifyDataSetChanged();
, которые я уже пробовал, и ничего не работало.
я сделал, проверив адаптер является нулевым или обновление данных таким образом, и получение исключения нулевого указателя:
if (adapter== null)
{
adapter = new CustomAdapter(getApplicationContext(), modelList);
lv.setAdapter(adapter);
}
Может кто-нибудь сказать мне, как я могу получить эту работу?
@ downvoter-Уход за комментарием, а не downvoting – coder
использование ArrayList модельList; как переменная окунания –
Должны ли данные храниться всегда? Если это так, мы должны использовать базу данных. Кроме того, мы можем использовать SharedPreferences или Extra in Intent – Nabin