我的目标是让一个活动可以像玩家的包。我使用数据库来存储对象,我希望有可能从包中做一些事情。 我想让它们可以点击,并且有一个对话框,其中包含玩家可以做什么的选项。对话框中的4个按钮必须能够:从数据库中删除单击的对象(已经得到它),关闭对话框(已经得到它),并使用和显示有关被点击对象的信息。问题是我无法识别被点击的项目。我该怎么做?以及如何更改不同点击项目的首选项?
public class TestDatabaseActivity extends ListActivity implements
OnClickListener {
private ItemsDataSource datasource;
TextView dt;
SharedPreferences prefs;
String str;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final ListView list = (ListView) findViewById(R.id.list);datasource = new ItemsDataSource(this);
datasource.open();
List<Item> values = datasource.getAllItems();
prefs = getSharedPreferences("com.eightynineindustries.librogamebase",MODE_PRIVATE);
String sel=prefs.getString("sel",null);
Toast.makeText(this, ""+sel, Toast.LENGTH_LONG).show();
// use the SimpleCursorAdapter to show the
// elements in a ListView
ArrayAdapter<Item> adapter = new ArrayAdapter<Item>(this,
android.R.layout.simple_list_item_1, values);
setListAdapter(adapter);
}
// Will be called via the onClick attribute
// of the buttons in main.xml
public void onClick(View view) {
@SuppressWarnings("unchecked")
ArrayAdapter<Item> adapter = (ArrayAdapter<Item>) getListAdapter();
Item item = null;
switch (view.getId()) {
case R.id.add:
String[] items = new String[] { "pozione", "lettera", "spada",
"cavallo" };
int nextInt = new Random().nextInt(4);
// save the new comment to the database
item = datasource.createItem(items[nextInt]);
adapter.add(item);
break;
case R.id.delete:
if (getListAdapter().getCount() > 0) {
item = (Item) getListAdapter().getItem(0);
datasource.deleteItem(item);
adapter.remove(item);
}
break;
case R.id.pane:
break;
}
adapter.notifyDataSetChanged();
}
@Override
protected void onResume() {
datasource.open();
super.onResume();
}
@Override
protected void onPause() {
datasource.close();
super.onPause();
}
@Override
protected void onListItemClick( final ListView list, View v, final int position,
long id) {
prefs = getSharedPreferences("com.eightynineindustries.librogamebase",MODE_PRIVATE);
// str = (String) list.getItemAtPosition(position);
// TODO Auto-generated method stub
super.onListItemClick(list, v, position, id);
final Dialog dialog = new Dialog(this);
dialog.setContentView(R.layout.dialog);
dialog.setTitle("Oggetto selezionato");
Button button1 = (Button) dialog.findViewById(R.id.button1);
Button button2 = (Button) dialog.findViewById(R.id.button2);
Button button3 = (Button) dialog.findViewById(R.id.button3);
Button button4 = (Button) dialog.findViewById(R.id.button4);
button1.setOnClickListener(this);
button2.setOnClickListener(this);
button3.setOnClickListener(this);
button4.setOnClickListener(this);
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View d) {
// do something to change prefs and then delete the item
@SuppressWarnings("unchecked")
ArrayAdapter<Item> adapter = (ArrayAdapter<Item>) getListAdapter();
Item item = null;
str = (String) getListView().getItemAtPosition(position);
if ( str == "cavallo") {
prefs.edit().putString("sel", "cavallo").commit();
} else if (str == "lettera" ) {
prefs.edit().putString("sel", "lettera").commit();
} else if (str == "spada") {
prefs.edit().putString("sel", "spada").commit();
} else if (str == "pozione") {
prefs.edit().putString("sel", "pozione").commit();
} else {
prefs.edit().putString("sel", "cacchiolo").commit();
}
item = (Item) getListView().getItemAtPosition(position);
datasource.deleteItem(item);
adapter.remove(item);
dialog.dismiss();
}
});
button2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
// do something to delete selected item
@SuppressWarnings("unchecked")
ArrayAdapter<Item> adapter = (ArrayAdapter<Item>) getListAdapter();
Item item = null;
item = (Item) getListView().getItemAtPosition(position);
datasource.deleteItem(item);
adapter.remove(item);
dialog.dismiss();
}
});
button3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
dialog.dismiss();
}
});
button4.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
dialog.dismiss();
}
});
dialog.show();
}}
直到这一刻,每次我按下第一个按钮使用该项目并将其删除时,共享的首选项将更改为“cacchiolo”,我按下的每个项目。我怎么解决呢?
答案 0 :(得分:0)
您正在将字符串与==
进行比较。这不是字符串的正确等式。使用str.equals("other string")