主なアクティビティとしてリストビューとして正常に表示される配列があります。私はここ数日、多くのチュートリアルを使って、このリストビューでクリックしたアイテムからさまざまなアクティビティを開始する最善の方法を見つけようとしています。私はswitch文から変数でクラスを呼び出すまでのすべてを見てきましたが、何も動作していないようです。私はおそらくifステートメントを使用するだろうが、私のリストは120以上のエントリです。助言がありますか?クリックしたリストビューから新しいアクティビティを開始する最善の方法
1
A
答えて
1
あなたは入れていないのはなぜ項目のパラメータとしてのクラス?
package com.ybi;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
public class YbiListActivity extends ListActivity
{
public void onCreate(Bundle icicle)
{
super.onCreate(icicle);
ClickableItem[] values = new ClickableItem[1];
// here you can add your label and your activity
values[0] = new ClickableItem("Hello", YbiListActivity.class);
ArrayAdapter<ClickableItem> adapter = new ArrayAdapter<ClickableItem>(this, android.R.layout.simple_list_item_1, values);
setListAdapter(adapter);
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id)
{
ClickableItem item = (ClickableItem) getListAdapter().getItem(position);
Intent intent = new Intent(YbiListActivity.this, (Class<?>) item.itemClass);
startActivity(intent);
Toast.makeText(this, item + " selected", Toast.LENGTH_LONG).show();
}
private class ClickableItem
{
public String itemLabel;
public Object itemClass;
public ClickableItem(String ilabel, Object iclass)
{
itemLabel = ilabel;
itemClass = iclass;
}
@Override
public String toString()
{
return itemLabel;
}
}
}
0
arrays.xml(list_itemsおよびlist_item_activities)に2つの新しい配列を作成することができます 次に、アイテムが選択されているときに、そのインデックスを使用して関連するアクティビティを検索できます。
<string-array name="list_items">
<item>ExampleActivity</item>
...
</string-array>
<string-array name="list_item_activities">
<item>com.example.app.ExampleActivity</item>
...
</string-array>
もう少しを説明するために、あなたがリストを作成するlist_itemsを使用します。
String[] list = getResources().getStringArray("list_items");
for(int i = 0; i < list.length; i++){
// add the item
}
次に項目がクリックされたとき:
public void onListItemClick(ListView l, View v, int position, long id){
String[] activities = getResources().getStringArray("list_item_activities");
// activities[position] is what you would use
}
関連する問題
- 1. Android - インスタンスから新しいアクティビティを開始する方法
- 2. WakeReminderIntentServiceから新しいアクティビティを開始する方法
- 3. アクティビティ以外のクラスから新しいアクティビティを開始する
- 4. Android - リストビューのクリックで新しいアクティビティを開く
- 5. tabview内のリストアクティビティから新しいアクティビティを開始する方法
- 6. オーバーレイアイテムの新しいアクティビティを開始する方法マップをタップしますか?
- 7. ユーザーがチェックボックスのテキストをクリックしたときに新しいアクティビティを開始する方法
- 8. 新しいアクティビティをアサートする方法が開始されました
- 9. lockscreenから新しいアクティビティを開始するには?
- 10. サブクラスからリスナーを使用して新しいアクティビティを開始
- 11. EditText最小の長さと新しいアクティビティを開始
- 12. 通知からアクティビティを開始しない方法
- 13. スレッド内で新しいアクティビティを開始
- 14. インテントからアクティビティを開始しない
- 15. 新しいアクティビティが開始されたときに通知する方法は?
- 16. Android - edittext値をバックグラウンドプロセスに渡して、一度終了したら新しいアクティビティを開始する方法
- 17. 次のアクティビティは、フラグメントアクティビティクラスからボタンをクリックして開始していません。
- 18. TransactionTooLargeException新しいアクティビティを開始したとき
- 19. プロジェクトを開始する最善の方法
- 20. 新しいアクティビティをAdMobで開始しますか?
- 21. タブのコンテンツから新しいアクティビティを開始するとタブが消える
- 22. onshakeメソッドを使用して新しいアクティビティを開始する
- 23. アイコンがクリックされたときにアクティビティが開始しない
- 24. GridViewからラジオボタンをクリックしてアクティビティを開く方法
- 25. アクティビティの開始方法ダイアログ
- 26. 新しいnodejsプロセスの開始方法
- 27. アクティビティを拡張しないクラスからアクティビティを開始
- 28. 新しいアクティビティを開始するアンドロイドアクティビティスタックをクリアする
- 29. AsyncTaskのdoInBackGround()内で新しいアクティビティを開始する
- 30. ナビゲーションの引き出しアイテムに関する新規アクティビティの開始クリック
うーん...あなたの答えは2D配列を思い出しました。私は試してみる必要があります。ありがとう –