更新时间:2023-01-06 12:44:47
所以我找到了解决方案,我第一次使用 ArrayList
迭代器使它变得过于复杂.
So I found the solution, I made it overcomplicated first time round with the ArrayList
Iterator.
该解决方案现在基本上从 AlertDialog
向 ListView
添加手动条目,条目存储在 ArrayList listItems
中.
The solution now basically adds manual entries to the ListView
from an AlertDialog
, entries are stored in an ArrayList listItems
.
更新源代码:
public class ManageLinguisticPhrases extends ListActivity
{
private static final String PHRASE = "Phrase_";
private String prefName = "myPhrasesStorage";
private SharedPreferences prefs;
private ArrayList <String> listItems = new ArrayList <String>();
private List<String> phrasesCollection = new LinkedList<String>();
private String phraseText = "test";
private static int count = 0;
private ArrayAdapter <String> adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
adapter = new ArrayAdapter <String> (this, android.R.layout.simple_list_item_1, listItems);
setListAdapter(adapter);
prefs = this.getSharedPreferences(prefName, MODE_PRIVATE);
for(int i = 0; i <= prefs.getAll().size(); i++) {
phrasesCollection.add(i, prefs.getString(PHRASE + i, "Ola, Tudo bem?"));
}
listItems.addAll(phrasesCollection);
adapter.notifyDataSetChanged();
}
@Override
protected Dialog onCreateDialog(int id)
{
final EditText input = new EditText(this);
switch (id)
{
case 0:
return new AlertDialog.Builder(this)
.setIcon(R.drawable.ic_launcher)
.setTitle("Please enter the new data")
.setView(input)
.setPositiveButton("Save", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int whichButton)
{
phraseText = input.getText().toString();
listItems.add(phraseText);
adapter.notifyDataSetChanged();
prefs = getSharedPreferences(prefName, MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
//save new phrase in myPhrasesStorage with key "Phrase_[count]"
editor.putString(PHRASE + count + "", phraseText);
count++;
editor.commit();
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int whichButton)
{
}
})
.create();
}
return null;
}
private void CreateMenu(Menu menu)
{
MenuItem mnu1 = menu.add(0, 0, 0, "Add data");
{
mnu1.setAlphabeticShortcut('a');
mnu1.setIcon(android.R.drawable.ic_menu_add);
}
MenuItem mnu2 = menu.add(0, 1, 1, "Edit data");
{
mnu2.setAlphabeticShortcut('b');
mnu2.setIcon(android.R.drawable.ic_menu_edit);
}
MenuItem mnu3 = menu.add(0, 2, 2, "Clear ALL data");
{
mnu3.setAlphabeticShortcut('c');
mnu3.setIcon(android.R.drawable.ic_menu_delete);
}
}
private boolean MenuChoice(MenuItem item)
{
switch (item.getItemId())
{
case 0:
showDialog(0);
return true;
case 2:
prefs = getSharedPreferences(prefName, MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.clear();
editor.commit();
listItems.clear();
adapter.notifyDataSetChanged();
Toast.makeText(this, "All phrases deleted",
Toast.LENGTH_LONG).show();
return true;
}
return false;
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
super.onCreateOptionsMenu(menu);
CreateMenu(menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
return MenuChoice(item);
}
}
享受吧!