我遇到了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()。或者只是指向谷歌白皮书。我找不到它。这并不像我知道如何看待那些东西。
答案 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。
我在其他帖子上看到它,它对我有用!!