我正在用android开发一个游戏应用程序。在我的应用程序中,我将级别和添加的级别作为列表视图。
现在我需要在达到关卡目标后锁定关卡。我不知道该怎么办。如何在安卓系统中锁定listview。通过使用下面的代码,我填充了列表并传递。
mainListView = (ListView) findViewById(R.id.mainListView);
// mainListView.setSelection(0);
String[] levels = new String[] { "Level-1", "Level-2", "Level-3",
"Level-4", "Level-5", "Level-6" };
ArrayList<String> levelList = new ArrayList<String>();
levelList.addAll(Arrays.asList(levels));
listAdapter = new ArrayAdapter<String>(this, R.layout.simple, levelList);
mainListView.setAdapter(listAdapter);
getlevelFromDb();
mainListView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> myAdapter, View myView,
int myItemInt, long mylng) {
String level = (String) (mainListView
.getItemAtPosition(myItemInt));
Intent intent = new Intent(LevelsActivity.this,
QuestionActivity.class);
intent.putExtra("level", level);
startActivity(intent);
}
});发布于 2012-06-18 21:00:33
在这种情况下,我基本上会有一个布尔数组(某种类型,有许多方法来实现这些类型的值),它与级别数组并行。要锁定它们,使其不被操作,您可以在操作本身( onItemClick)中检查这个布尔数组。通过这种方式,您只能在看到true时才执行操作,而不执行任何操作,或者在数组声明为false的情况下显示一个小视图,说明它们还没有走那么远。
当它们通过该级别时,您可以简单地将一个true值应用于下一级别,列表视图中该项目的操作应该会自动拾取。
如果您希望灰显尚未解锁的级别,则必须为ListView实现自定义ArrayAdapter!
发布于 2012-06-18 20:51:49
如果你想使用字符串作为你的级别id,那么你必须在新的级别解锁时将字符串添加到你的数组中。
或者,您可以使用带有布尔标志“未锁定”的自定义级别类以及自定义ListAdapter,以仅显示未锁定的级别。
发布于 2012-06-18 21:00:07
Jarkko有最好的解决方案,但如果你想保持简单,你需要将解锁的关卡存储在某个地方(共享首选项可以工作),然后在启动关卡活动之前,你需要检查关卡是否解锁。所以
if (isLevelUnlocked(level)){
startActivity(intent);
}else{
//Level is not unlocked yet, display a msg to the user.
}https://stackoverflow.com/questions/11083200
复制相似问题