我正在将数组加载到listview中,当我单击列表项时,我想在同一活动中的textview中显示该项。该列表当前正在加载,但程序在单击项目时崩溃。有什么想法吗?
import java.util.ArrayList;
import android.app.ListActivity;
import android.content.res.Resources;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
public class WordList extends ListActivity {
/**
* @see android.app.Activity#onCreate(Bundle)
*
*/
//public final static String TERM_EXTRA="com.myapp._word";
//public final static String DEF_EXTRA="com.myapp._pic";
TextView selection;
ArrayList<String> words=new ArrayList<String>();
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
selection=(TextView)findViewById(R.id.selection);
Resources res=getResources();
String[] words = res.getStringArray(R.array.words);
setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,words));
}
public void onListItemClick(ListView parent, View v, int position,long id) {
selection.setText(words.get(position).toString());
}
}
答案 0 :(得分:3)
因为如果你没有将任何对象附加到&#34;单词&#34; words.get(position).toString()
,则返回null。这是一个以这种方式声明的ArrayList:
ArrayList<String> words=new ArrayList<String>();
"String[] words"
不是您在onListItemClick
中使用的内容,但"ArrayList<String> words"
是。
编辑:
评论arraylist,并定义&#34; String [] words&#34;在onCreate之外。
//ArrayList<String> words=new ArrayList<String>();
String[] words;
然后在你的onListItemClick;
selection.setText(words[position]);
你很高兴。