问题描述
||
我在使用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()。或者只是指向Google的白皮书。我找不到。好像我不知道如何查找这些东西。
解决方法
setListAdapter()
不是您可以在Activity
上调用的方法(it5ѭ可用),但您没有使用它。您将必须在布局(/ res / layout / passwordscreen)中添加ListView
,然后找到它并在其上调用setAdapter
。
例如
ListView lv = (ListView) findViewById(R.id.mylistview);
lv.setAdapter(.....);
,嘿,这是由于基类,您的基类应该是:
public class yourClassName extends ListActivity{
不将yourClassName类别扩展为Activity {
,当您调用setListAdapter时,这必须扩展ListActivity,您可能只是在类中扩展了Activity。
我在其他帖子上看到了它,对我有用!