setlistadapter问题我不知道这是怎么回事

时间:2011-05-26 06:32:43

标签: android

我遇到了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()正在做什么那将是很好的。我无法理解google正在谈论的内容。

这是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()。或者只是指向谷歌白皮书。我找不到它。这并不像我知道如何看待那些东西。

3 个答案:

答案 0 :(得分:3)

setListAdapter()不是您可以在Activity上调用的方法(ListActivity上可用,但您没有使用它)。您将不得不在布局中添加ListView(/ res / layout / passwordscreen),然后找到它并在其上调用setAdapter

e.g。

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

答案 1 :(得分:3)

嘿那是因为基类,你的基类应该是:

public class yourClassName extends ListActivity{

not class yourClassName extends Activity {

答案 2 :(得分:0)

当你调用setListAdapter时,这必须扩展ListActivity,你可能只是扩展了Activity。

我在其他帖子上看到它,它对我有用!!