2013-03-05 59 views
0

我有一个ListView。它包含带图像的文字。我知道如果我点击ListView项目,Toast会出现,但我想要的是点击该项目以打开其各自的活动。点击的列表视图它必须去各自的活动?

@Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 

      ArrayList<Recipedetails> image_details = GetSearchResults(); 

      final ListView lv1 = (ListView) findViewById(R.id.listV_main); 
      lv1.setAdapter(new ItemListBaseAdapter(this, image_details)); 

      lv1.setOnItemClickListener(new OnItemClickListener() { 
       @Override 
       public void onItemClick(AdapterView<?> a, View v, int position, long id) { 
        Object o = lv1.getItemAtPosition(position); 
        Recipedetails obj_itemDetails = (Recipedetails)o; 
        Toast.makeText(SouthIndian.this, "You have chosen : " + " " + obj_itemDetails.getName(), Toast.LENGTH_LONG).show(); 

        switch(obj_itemDetails.getName()) 
        { 
        case "Vegterian": 
         Intent newActivity = new Intent(SouthIndian.this, 
                SouthIndianvegrecipes.class);  
         startActivity(newActivity); 
         break; 
        case "Non-Vegterian": 
         Intent new1Activity = new Intent(SouthIndian.this, 
           SouthIndiannonvegrecipes.class);  
         startActivity(new1Activity); 
         break; 
        //same for other Activity 
        } 
       } 
      }); 
     } 

     private ArrayList<Recipedetails> GetSearchResults(){ 
      ArrayList<Recipedetails> results = new ArrayList<Recipedetails>(); 

      Recipedetails item_details = new Recipedetails(); 
      item_details.setName("Vegterian"); 
      item_details.setItemDescription("Recipes made by raw materials"); 
      //item_details.setPrice("RS 310.00"); 
      item_details.setImageNumber(1); 
      results.add(item_details); 

      item_details = new Recipedetails(); 
      item_details.setName("Non-Vegterian"); 
      item_details.setItemDescription("Flesh of sweet animals"); 
      //item_details.setPrice("RS 350.00"); 
      item_details.setImageNumber(2); 
      results.add(item_details); 

      item_details = new Recipedetails(); 
      item_details.setName("Pickels"); 
      item_details.setItemDescription("Touchable dish by Homemade"); 
      //item_details.setPrice("RS 250.00"); 
      item_details.setImageNumber(3); 
      results.add(item_details); 

      item_details = new Recipedetails(); 
      item_details.setName("Soups"); 
      item_details.setItemDescription("Startup for our food"); 
      //item_details.setPrice("RS 350.00"); 
      item_details.setImageNumber(4); 
      results.add(item_details); 




      return results; 
     } 

我想要的是如果我点击第一个图像,它必须去Activity。就像它必须去各自的活动一样,不是一回事。我怎样才能做到这一点?

我的AndroidManifest.xml

<activity 
     android:name="com.example.recipestutors.MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <activity android:name="RecipeActivity" android:label="@string/activity_recipeview" android:theme="@style/AppTheme"></activity> 
    <activity android:name="SouthIndian" android:label="@string/activity_SouthIndianrecipeview" android:theme="@style/AppTheme"></activity> 
    <activity android:name="NorthIndian" android:label="@string/activity_NorthIndianrecipeview" android:theme="@style/AppTheme"></activity> 
    <activity android:name="Western" android:label="@string/activity_Westernrecipeview" android:theme="@style/AppTheme"></activity> 
    <activity android:name="Chinese" android:label="@string/activity_Chineserecipeview" android:theme="@style/AppTheme"></activity> 
    <activity android:name="SouthIndianvegrecipes" android:label="@string/activity_Chineserecipeview" android:theme="@style/AppTheme"></activity> 
    <activity android:name="SouthIndiannonvegrecipes" android:label="@string/activity_Chineserecipeview" android:theme="@style/AppTheme"></activity> 
</application> 

logcat的示值误差

03-05 10:47:36.091: E/AndroidRuntime(3485): FATAL EXCEPTION: main 
03-05 10:47:36.091: E/AndroidRuntime(3485): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.recipestutors/com.example.recipestutors.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "com.example.recipestutors.MainActivity" on path: /data/app/com.example.recipestutors-1.apk 
03-05 10:47:36.091: E/AndroidRuntime(3485):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2106) 
03-05 10:47:36.091: E/AndroidRuntime(3485):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
03-05 10:47:36.091: E/AndroidRuntime(3485):  at android.app.ActivityThread.access$600(ActivityThread.java:141) 
03-05 10:47:36.091: E/AndroidRuntime(3485):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
03-05 10:47:36.091: E/AndroidRuntime(3485):  at android.os.Handler.dispatchMessage(Handler.java:99) 
03-05 10:47:36.091: E/AndroidRuntime(3485):  at android.os.Looper.loop(Looper.java:137) 
03-05 10:47:36.091: E/AndroidRuntime(3485):  at android.app.ActivityThread.main(ActivityThread.java:5039) 
03-05 10:47:36.091: E/AndroidRuntime(3485):  at java.lang.reflect.Method.invokeNative(Native Method) 
03-05 10:47:36.091: E/AndroidRuntime(3485):  at java.lang.reflect.Method.invoke(Method.java:511) 
03-05 10:47:36.091: E/AndroidRuntime(3485):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
03-05 10:47:36.091: E/AndroidRuntime(3485):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
03-05 10:47:36.091: E/AndroidRuntime(3485):  at dalvik.system.NativeStart.main(Native Method) 
03-05 10:47:36.091: E/AndroidRuntime(3485): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.recipestutors.MainActivity" on path: /data/app/com.example.recipestutors-1.apk 
03-05 10:47:36.091: E/AndroidRuntime(3485):  at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:65) 
03-05 10:47:36.091: E/AndroidRuntime(3485):  at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 
03-05 10:47:36.091: E/AndroidRuntime(3485):  at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 
03-05 10:47:36.091: E/AndroidRuntime(3485):  at android.app.Instrumentation.newActivity(Instrumentation.java:1054) 
03-05 10:47:36.091: E/AndroidRuntime(3485):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2097) 
03-05 10:47:36.091: E/AndroidRuntime(3485):  ... 11 more 

回答

0

你可以使用意图在onClickListener

lv1.setOnItemClickListener(new OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> a, View v, int position, long id) { 
      Intent intent = new Intent(firstActivity.this, SecondActivity.class); 

      startActivity(intent); 
     } 
    }); 

您可以使用开关或如果里面的onClick else语句去perticular activites根据点击位置

switch (Array[position]) { 

    case Array[1]: //if position1 is clicked 
      Intent intent = new Intent(MainActivity.this, FirstActivity.class); 

      startActivity(intent); 
      break; 
      case Array[2]: //if 2nd position is clicked..so on 
      Intent intent = new Intent(MainActivity.this, SecondActivity.class); 

      startActivity(intent); 
      break; 

等等.....

+0

没有,我知道那一个,如果我点击所有的图像也将进入到第二个活动,但如果我点击它已去第二个活动,第一个文本,如果我点击它有第二个文本我需要的是去第三个活动,像这样我想 – kkarthickk 2013-03-05 10:29:58

+0

看到编辑答案] – Shiv 2013-03-05 10:36:18

+0

老兄,我没有得到你的回答正确,首先我会解释清楚,有5个项目在列表视图中,如果我点击第一个项目它必须打开firstactivity,接下来如果我点击第二个项目它必须打开第二个,如果我点击3个项目,它必须打开3个活动,就像我想要的。 – kkarthickk 2013-03-05 10:51:51

0

使用switch-case打开活动根据ListView的点击为:

lv1.setOnItemClickListener(new OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> a, View v, int position, long id) { 
     Object o = lv1.getItemAtPosition(position); 
     Recipedetails obj_itemDetails = (Recipedetails)o; 
     Toast.makeText(SouthIndian.this, "You have chosen : " + " " + 
          obj_itemDetails.getName(), Toast.LENGTH_LONG).show(); 
      switch(obj_itemDetails.getName()) 
      { 
      case "Vegterian": 
       Intent newActivity = new Intent(SouthIndian.this, 
              Vegterian_Activity.class);  
       startActivity(newActivity); 
      break; 
      case "Non-Vegterian": 
       Intent newActivity = new Intent(SouthIndian.this, 
             Non_Vegterian_Activity.class);  
       startActivity(newActivity); 
      break; 
      .....//same for other Activity 
     } 
     } 
    }); 
+0

感谢花花公子我会检查,并告诉 – kkarthickk 2013-03-05 10:36:18

+0

十月3日至5日:41:29.611:E/AndroidRuntime(3334):了java.lang.RuntimeException:无法实例活动ComponentInfo {融为一体。 example.recipestutors/com.example.recipestutors.MainActivity}:java.lang.ClassNotFoundException:未在路径中找到类“com.example.recipestutors.MainActivity”:/data/app/com.exa mple.recipestutors-1.apk 10月3日至5日:41:29.611:E/AndroidRuntime(3334):抛出java.lang.ClassNotFoundException:由造成没有对路径发现类 ​​“com.example.recipestutors.MainActivity”: /data/app/com.example.recipestutors-1.apk 它显示logcat中的错误 – kkarthickk 2013-03-05 10:52:31

+0

@ user2118898:请确保您已添加AndroidManifest.xml中的所有活动。还要检查MainActivity活动 – 2013-03-05 10:55:23

0

看着你的logcat输出在androidmenifest文件中有问题,应用程序无法找到活动类。你应该改变活动的声明。

来源:

<activity android:name="RecipeActivity" android:label="@string/activity_recipeview" android:theme="@style/AppTheme"></activity> 

要:

<activity android:name=".RecipeActivity" android:label="@string/activity_recipeview" android:theme="@style/AppTheme"></activity> 

OR:

<activity android:name="FULL_PACKAGE_PATH.RecipeActivity" android:label="@string/activity_recipeview" android:theme="@style/AppTheme"></activity> 

注:有缺失。在活动宣言

+0

我做到了,但现在显示错误,Android需要编译器合规性级别5.0或6.0。取而代之的是“1.7”。请使用Android工具>修复项目属性。 – kkarthickk 2013-03-05 12:13:01

+0

我改变了我的JDK版本为1.7也,尽管它显示该行开关错误(obj_itemDetails.getName()) – kkarthickk 2013-03-05 12:14:35

+0

老兄我们不能在开关中使用字符串,我怎么写 – kkarthickk 2013-03-05 12:29:47

0

就像logcat说,错误是在你的清单文件..你没有正确注册的活动。 在您的清单中添加“。”你必须指定这样

<activity android:name="com.example.recipestutors.RecipeActivity" android:label="@string/activity_recipeview" android:theme="@style/AppTheme"></activity> 

这样

<activity android:name=".RecipeActivity" android:label="@string/activity_recipeview" android:theme="@style/AppTheme"></activity> 

所有活动名称前或你需要编辑每一个。

相关问题