主なアクティビティとしてリストビューとして正常に表示される配列があります。私はここ数日、多くのチュートリアルを使って、このリストビューでクリックしたアイテムからさまざまなアクティビティを開始する最善の方法を見つけようとしています。私は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. クリックした場所から新しいアクティビティを開始する方法
- 2. リストビューで新しいアクティビティを開く方法imageとtexxtをクリック
- 3. 新しいアクティビティを開始し、そのアクティビティでメソッドを開始する方法
- 4. WakeReminderIntentServiceから新しいアクティビティを開始する方法
- 5. Android - インスタンスから新しいアクティビティを開始する方法
- 6. アクティビティ以外のクラスから新しいアクティビティを開始する
- 7. Android - リストビューのクリックで新しいアクティビティを開く
- 8. CardViewから共有アクションの新しいアクティビティを開始する方法
- 9. tabview内のリストアクティビティから新しいアクティビティを開始する方法
- 10. Googleマップのマーカーをクリックした後に新しいアクティビティが開始しない
- 11. フローティングボタン新しいアクティビティを開始する
- 12. 最新のAndroidアプリアイコンが新しいアクティビティを開始しました
- 13. オーバーレイアイテムの新しいアクティビティを開始する方法マップをタップしますか?
- 14. ユーザーがチェックボックスのテキストをクリックしたときに新しいアクティビティを開始する方法
- 15. lockscreenから新しいアクティビティを開始するには?
- 16. 統合されたgoogle apiアクティビティから新しいアクティビティを開始する方法
- 17. 新しいアクティビティをアサートする方法が開始されました
- 18. サブクラスからリスナーを使用して新しいアクティビティを開始
- 19. onListItemClickを介してListFragmentからアクティビティを開始する方法
- 20. アクティビティが別のアクティビティを開始したため、アクティビティのタイムアウトを開始する
- 21. 既存のタスクの通知から新しいアクティビティを開始
- 22. 通知からアクティビティを開始しない方法
- 23. EditText最小の長さと新しいアクティビティを開始
- 24. フラグメント内の画像ボタンから新しいアクティビティを開始
- 25. インテントからアクティビティを開始しない
- 26. ListViewからアクティビティを開始し、次のアクティビティを開始します
- 27. スレッド内で新しいアクティビティを開始
- 28. インクルードブロックで新しいアクティビティを開始
- 29. 原因:java.lang.OutOfMemoryError(新しいアクティビティの開始)
- 30. リストビューのデータは、新しいアクティビティの開始後に維持されます。
うーん...あなたの答えは2D配列を思い出しました。私は試してみる必要があります。ありがとう –