2011-05-26 65 views
0

我遇到了setListAdapter()問題。它告訴我只是創建方法,因爲它不知道任何事情。我現在只是試圖獲得一個列表來填充,我甚至不知道這個代碼在做什麼。setlistadapter問題我不知道這是如何工作的

public class PassScreen extends Activity { 
TextView selection; 
ArrayList<String> items = new ArrayList<String>(); 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.passwordscreen); 
    selection=(TextView)findViewById(R.id.selection); 

    try { 
     InputStream in=getResources().openRawResource(R.raw.words); 
     DocumentBuilder builder=DocumentBuilderFactory.newInstance().newDocumentBuilder(); 
     Document doc = builder.parse(in,null); 
     NodeList words=doc.getElementsByTagName("word"); 
     for (int i =0;i<words.getLength();i++){ 
      items.add(((Element)words.item(i)).getAttribute("value")); 
     } 
     in.close(); 
    } 
    catch (Throwable t){ 
     Toast.makeText(this, "Exception: " + t.toString(), 2000).show(); 
    } 

      setListAdapter(new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, 
      items)); 

} 
public void onListItemClick(ListView parent, View v, int position, long id){ 
    selection.setText(items.get(position).toString()); 
} 
} 

正如你可以看到我有和我使用的xml文件。這看起來就像本書的樣子,但是我又複製並粘貼了setListAdapter(),所以我想這並不是那麼有用。

如果你還可以告訴我setListAdapter()在做什麼,那會很好。我不明白谷歌在談論什麼。

這裏是XML:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 

<TextView 
android:id="@+id/selection" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content"/> 

<ListView 
    android:id="@android:id/list" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:drawSelectorOnTop="false"/> 

</LinearLayout> 

而且有些字的xml:

<words> 
<word value="lorem"/> 
<word value="ipsom"/> 
<word value="dolor"/> 
</words> 

而且你能解釋一下這是怎麼回事?我根本不理解setListAdapter()。或者只是指向Google的白皮書。我找不到它。無論如何,我不知道如何看待這些東西。

+0

我想通了我的代碼有什麼問題。我只需要擴展ListActivity。然而他們仍然沒有名單。我將不得不繼續尋找這個,但如果你能看到我不能做的事情,並糾正我,那會很棒。這隻花了我一個小時才知道。並在發佈後。 – Funlamb 2011-05-26 06:40:05

+0

發現問題。我需要爲我的佈局添加一個方向。哎呀! – Funlamb 2011-05-30 02:14:52

回答

3

setListAdapter()不是你可以撥打Activity的方法(它可以在ListActivity上找到,但是你沒有使用它)。你將不得不在你的佈局(/ res/layout/passwordscreen)中添加一個ListView,然後找到它並在那上面調用setAdapter

例如

ListView lv = (ListView) findViewById(R.id.mylistview); 
lv.setAdapter(.....); 
+0

是的,我發佈後我確實知道了。我昨天想了解1小時。然後我今天嘗試了將近30分鐘。所以我剛發佈它。我解決了這個問題,但是我沒有列出。我沒有得到錯誤,所以我可以運行該程序,但我沒有得到一個列表。感謝您的快速回復。 – Funlamb 2011-05-26 06:51:25

+0

恭喜你一百萬次下載,我只是嘲笑你的噓聲。 – Funlamb 2011-05-26 06:57:50

+0

謝謝,BatteryWidget現在已經有420萬次下載,那篇博客文章早就回來了。另外,如果你想在這裏粘貼一些佈局xml,我會檢查一下,也許你的listview在屏幕上沒有任何空間。你能否勾選我以前的回覆?謝謝。 – GeekYouUp 2011-05-26 07:02:53

3

嘿,這是因爲基類,基類應該是:

public class yourClassName extends ListActivity{ 

不是階級yourClassName延伸活動{

0

當你調用setListAdapter這必須擴展ListActivity可能是你的類只擴展活動。

我在其他一些帖子上看到它,它適合我!

相關問題