Я пытаюсь создать приложение, которое должно использовать ListActivity и заполнить список с закладками, которые пользователь может добавить.Почему мои результаты не добавляются в первый раз?
Опция «Добавить закладку» указана в меню приложения, и при ее выборе она вызывает функции «показать диалог», которые заставляют пользователя заполнять 3 строковые переменные (заголовок, URL и примечание).
После получения ввода я хочу, чтобы он вызывал addBookmark(), который добавит строки к объекту класса Bookmark, а затем добавит объект в список через ArrayAdapter.
На данный момент, когда я компилирую и нажимаю кнопку «Добавить закладку» в меню, приложение, похоже, не работает и сразу же заполняет список текстом, который я использовал для инициализации строк, и не добавляет пользователей пока кнопка не будет нажата второй раз. Мой ожидаемый результат состоит в том, чтобы не отображать ничего при первом нажатии кнопки «Добавить закладку» и выводе пользователей, как только они заканчивают ввод и добавление его самих. Мой код ниже
import android.app.AlertDialog;
import android.app.ListActivity;
import android.content.DialogInterface;
import android.os.Bundle;
import android.text.InputType;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import java.util.ArrayList;
public class BookNote extends ListActivity{
private ArrayAdapter<Bookmark> adapter;
private String title = "Example Title",url = "www.ExampleURL.com",note = "Example Note about Website";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ArrayList<Bookmark> bookmarkList = new ArrayList<>();
adapter = new ArrayAdapter<Bookmark>(this,android.R.layout.simple_list_item_1,bookmarkList);
setListAdapter(adapter);
}
//Show dialog and editText for user to assign title to bookmark.
public void showTitleDialog(){
AlertDialog.Builder titleBuilder = new AlertDialog.Builder(this);
titleBuilder.setTitle("Enter Title");
final EditText titleET = new EditText(this);
titleET.setInputType(InputType.TYPE_TEXT_VARIATION_NORMAL);
titleBuilder.setView(titleET);
titleBuilder.setPositiveButton("Add", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int i) {
title = titleET.getText().toString();
}
});
titleBuilder.show();
}
//Show dialog and editText for user to assign url to bookmark.
public void showURLDialog(){
AlertDialog.Builder urlBuilder = new AlertDialog.Builder(this);
urlBuilder.setTitle("Enter URL");
final EditText urlET = new EditText(this);
urlET.setInputType(InputType.TYPE_TEXT_VARIATION_NORMAL);
urlBuilder.setView(urlET);
urlBuilder.setPositiveButton("Add", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int i) {
url = urlET.getText().toString();
}
});
urlBuilder.show();
}
//Show dialog and editText for user to assign note to bookmark.
public void showNoteDialog(){
AlertDialog.Builder noteBuilder = new AlertDialog.Builder(this);
noteBuilder.setTitle("Enter Note");
final EditText noteET = new EditText(this);
noteET.setInputType(InputType.TYPE_TEXT_VARIATION_NORMAL);
noteBuilder.setView(noteET);
noteBuilder.setPositiveButton("Add", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
note = noteET.getText().toString();
}
});
noteBuilder.show();
}
//Create new bookmark object filled with user entries and add to ArrayAdapter.
private void addBookmark(){
Bookmark bookmark = new Bookmark(title,url,note);
adapter.add(bookmark);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_book_note, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_add) {
showTitleDialog();
showURLDialog();
showNoteDialog();
addBookmark();
return true;
}
return super.onOptionsItemSelected(item);
}
}