2

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);

            }
        });
4

3 に答える 3

2

この場合、基本的に、レベル配列に対応するブール配列(ある種の、これらのタイプの値を実現する多くの方法があります)があります。それらがアクションされないようにロックするには、アクション自体(onItemClick)内のこのブール配列に対してチェックを入れることができます。このように、trueを確認して何もしない場合にのみアクションを実行できます。または、配列がfalseと表示されている場合は、それほど遠くまで到達していないことを示す小さなビューを表示できます。

レベルを通過すると、真の値を次のレベルに適用するだけで、リストビュー内のアイテムのアクションが自動的に取得されます。

まだロック解除されていないレベルをグレー表示したい場合は、ListView用のカスタムArrayAdapterを実装する必要があります!!!

于 2012-06-18T13:00:33.060 に答える
1

レベル ID として文字列を使用する場合は、新しいレベルのロックが解除されるときに、配列に文字列を追加する必要があります。

別の方法として、'unlocked' ブール値フラグを持つカスタム Level-class とカスタム ListAdapter を使用して、ロックされていないレベルのみを表示することもできます。

于 2012-06-18T12:51:48.807 に答える
0

Jarkkoが最善の解決策を持っていますが、維持したい場合は、ロック解除されたレベルをどこかに保存する必要があり(共有設定が機能します)、レベルアクティビティを開始する前に、レベルがロック解除されているかどうかを確認する必要があります。それで

if (isLevelUnlocked(level)){
    startActivity(intent);
}else{
    //Level is not unlocked yet, display a msg to the user.
}
于 2012-06-18T13:00:07.193 に答える