2013-03-05 39 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> 

所有活動名稱前或你需要編輯每一個。

相關問題