2011-08-09 65 views
2

這可能真的很長,對於那些讀完這一切的可憐的靈魂,我感到抱歉。onItemClick的問題

目標:我想創建一個口袋妖怪Pokedex應用程序(是的,我知道很幼稚)。我認爲這對於第一個應用程序來說是非常棒的,因爲要處理大量的數據。對於那些不熟悉寵物小精靈的人來說,它基本上來自#001 - #649列表中的生物。我想在列表中顯示所有生物,並讓用戶點擊該生物。一旦生物被點擊,它將在不同的屏幕上顯示關於它的統計數據。

確定回到編程...

package com.pokemon.pokdex; 

import android.app.ListActivity; 
import android.os.Bundle; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ArrayAdapter; 

public class PokedexActivity extends ListActivity { 
    @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 

      setListAdapter(ArrayAdapter.createFromResource(getApplicationContext(), 
        R.array.pokemon_titles, R.layout.list_item)); 

      final String[] links = getResources().getStringArray(R.array.pokemon_stats); 

      getListView().setOnItemClickListener(new OnItemClickListener() { 

       @Override 
       public void onItemClick(AdapterView<?> parent, View view, 
         int position, long id) { 
        String content = links[position]; 
       } 
      }); 
     } 
} 

遇到錯誤的getListView().setOnItemClickListener(new OnItemClickListener() {哪裏是說OnItemClickListener()View view。它說:The type new AdapterView.OnItemClickListener(){} must implement the inherited abstract method AdapterView.OnItemClickListener.onItemClick(AdapterView<?>, View, int, long)OnItemClickListener()和View不能解析爲一個類型View view,

package com.pokemon.pokdex; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.webkit.WebView; 
import android.widget.ArrayAdapter; 

public class PokedexViewActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.pokemon_stats); 

     }; 
    } 

在這個文件我在setContentView(R.layout.pokemon_stats);得到一個錯誤以下是錯誤pokemon_stats cannot be resolved or is not a field

我string.xml文件看起來像 (這是口袋妖怪將被設置還有統計數據。我做了下面的第一個寵物小精靈。)

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <string name="hello">Pokemon Pokedex</string> 
    <string name="app_name">Pokedex</string> 
    <string-array name="pokemon_titles"> 
    <item>#001 - Bulbasaur</item> 
</string-array> 
<string-array name="pokemon_stats"> 
    <item>Grass Type</item> 
</string-array> 
</resources> 

我main.xml中看起來像

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello" 
    /> 
</LinearLayout> 

我list_item.xml看起來像

<?xml version="1.0" encoding="utf-8"?> 
<TextView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:textSize="24dp" 
android:padding="6dp" /> 

任何幫助表示讚賞,並感謝你,如果你做了這麼遠:)

編輯:更新和補充的確切的錯誤,我獲得。

+1

你應該添加收到的確切的錯誤。我無法弄清楚它們是編譯時還是runime-error。準確地在發生錯誤的地方提供完整的堆棧跟蹤。 – Snicolas

+0

它給我的錯誤就好像它們是語法錯誤一樣。我甚至沒有編譯。 –

+0

錯誤說什麼? (在mouve上) – Snicolas

回答

5

對於你的錯誤setContentView(R.layout.pokemon_stats); pokemon_stats不是佈局。 main.xml是你的佈局。 pokemon_stats是一個字符串數組,這就是你的問題。沒有佈局稱爲pokemon_stats.xml,我想你想要R.layout.main

另外,爲什麼在}之後在這裏有一個分號?

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.pokemon_stats); 

    }; 

編輯:在你的其他錯誤,一個與視圖的頂部,你忘了導入android.view.View;添加這個。您可以保留您的原始代碼。

import android.view.View; 

這應該是真的。

+0

我真的不知道爲什麼那裏有一個分號。這解決了我的錯誤,但仍然需要PokedexActivity上的View視圖不會出錯。感謝您的答覆,併爲長時間閱讀而感到抱歉。 :) –

+0

對不起,錯誤的答案。添加這個導入,這就是你想要的。導入android.view.View;或者看我的編輯。 – Otra

0

您在textView上沒有任何ID用於存放信息,該信息將在何處顯示?

另外,對於您的資源,您的數據應該真正保存在CSV或其他數據的單個數組中,這比在不同數組中保存不同信息要簡單得多。使用標籤或數組順序解析數據,並以這種方式將它們綁定到您的視圖。

您的main.xml也將成爲此處顯示的內容。如果您沒有爲main.xml定義任何內容,則該程序將出錯。 setContentView()設置整個屏幕的內容視圖。如果你想添加一個項目到一個視圖,使用View.addItem(佈局)。

希望這會有所幫助。這是我可以做的最好的,沒有任何錯誤信息!

+0

錯誤消息。我更新了它。 –

2

現在嘗試

package com.pokemon.pokdex; 

import android.app.ListActivity; 
import android.os.Bundle; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 

    import android.widget.ArrayAdapter; 

    public class PokedexActivity extends ListActivity { 
     @Override 
      public void onCreate(Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState); 

       setListAdapter(ArrayAdapter.createFromResource(getApplicationContext(), 
         R.array.pokemon_titles, R.layout.list_item)); 

       }); 
      } 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, 
          int position, long id) { 
       final String[] links = getResources().getStringArray(R.array.pokemon_stats); 
         String content = links[position];   
      } 

    } 
+0

這適用於其中一個錯誤。我在OnItemClick()的View視圖上仍然存在錯誤 –