我正在尝试用我正在学习的教程创建一个带有图像的listView . 但是我随时运行代码时会得到空指针异常 . 可能是什么问题?
这是我的代码:公共类MainActivity扩展Activity {
String[] memeTitles;
String[] memeDescriptions;
ListView list;
int [] images = {R.drawable.esrb,R.drawable.iconcreativity,
R.drawable.meme1,R.drawable.meme2 R.drawable.meme10,R.drawable.meme7,R.drawable.meme8,R.drawable.mory,R.drawable.number1,
R.drawable.share,R.drawable.stats};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Resources res = getResources();
memeTitles = res.getStringArray(R.array.titles);
memeDescriptions = res.getStringArray(R.array.descriptions);
list = (ListView) findViewById(R.id.listView1);
myListAdapter adapter = new myListAdapter(this, memeTitles, images,
memeDescriptions);
list.setAdapter(adapter);
}
class myListAdapter extends ArrayAdapter<String>{
Context context;
int [] images;
String[] titleArray;
String [] descriptionArray;
public myListAdapter(Context c,String[] titles,int[] imgs,String[] desc)
{
super(c, R.layout.single_row,R.id.textView1, titles);
this.context =c;
this.images = imgs;
this.titleArray= titles;
this.descriptionArray = desc;
}
public View getView(int position, View convertView,ViewGroup parent){
LayoutInflater inflater = (LayoutInflater)
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View row = inflater.inflate(R.layout.single_row, parent,false);
ImageView myImage = (ImageView) row.findViewById(R.id.imageView1);
TextView myTitle = (TextView) row.findViewById(R.id.imageView1);
TextView myDescription = (TextView) row.findViewById(R.id.textView2);
myImage.setImageResource(images[position]);
myTitle.setText(titleArray[position]);
myDescription.setText(descriptionArray[position]);
return row;
}
}
这是我在string.xml中的数组:
<string-array name="titles">
<item>Meme 1</item>
<item>Meme 2</item>
<item>Meme 3</item>
<item>Meme 4</item>
<item>Meme 5</item>
<item>Meme 6</item>
<item>Meme 7</item>
<item>Meme 8</item>
<item>Meme 9</item>
<item>Meme 10</item>
</string-array>
<string-array name="descriptions">
<item>This is Description1</item>
<item>This is Description2</item>
<item>This is Description3</item>
<item>This is Description4</item>
<item>This is Description5</item>
<item>This is Description6</item>
<item>This is Description7</item>
<item>This is Description8</item>
<item>This is Description9</item>
<item>This is Description10</item>
</string-array>
这是我的Logcat
06-13 16:54:40.775: E/AndroidRuntime(1387): FATAL EXCEPTION: main
06-13 16:54:40.775: E/AndroidRuntime(1387):
java.lang.ClassCastException: android.widget.ImageView cannot be cast
to android.widget.TextView
06-13 16:54:40.775: E/AndroidRuntime(1387): at
com.example.mylistview.myListAdapter.getView(MainActivity.java:87)
06-13 16:54:40.775: E/AndroidRuntime(1387): at
android.widget.AbsListView.obtainView(AbsListView.java:2177)
06-13 16:54:40.775: E/AndroidRuntime(1387): at
android.widget.ListView.measureHeightOfChildren(ListView.java:1247)
06-13 16:54:40.775: E/AndroidRuntime(1387): at
android.widget.ListView.onMeasure(ListView.java:1159)
06-13 16:54:40.775: E/AndroidRuntime(1387): at
android.view.View.measure(View.java:15848)
06-13 16:54:40.775: E/AndroidRuntime(1387): at
android.widget.RelativeLayout.measureChild(RelativeLayout.java:698)
06-13 16:54:40.775: E/AndroidRuntime(1387): at
android.widget.RelativeLayout.onMeasure(RelativeLayout.java:494)
06-13 16:54:40.775: E/AndroidRuntime(1387): at
android.view.View.measure(View.java:15848)
06-13 16:54:40.775: E/AndroidRuntime(1387): at
android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5012)
06-13 16:54:40.775: E/AndroidRuntime(1387): at
android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
06-13 16:54:40.775: E/AndroidRuntime(1387): at
android.view.View.measure(View.java:15848)
06-13 16:54:40.775: E/AndroidRuntime(1387): at
android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5012)
06-13 16:54:40.775: E/AndroidRuntime(1387): at
com.android.internal.widget.ActionBarOverlayLayout.onMeasure
(ActionBarOverlayLayout.java:302)
06-13 16:54:40.775: E/AndroidRuntime(1387): at android.view.View.measure(View.java:15848)
06-13 16:54:40.775: E/AndroidRuntime(1387): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5012)
06-13 16:54:40.775: E/AndroidRuntime(1387): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
06-13 16:54:40.775: E/AndroidRuntime(1387): at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2189)
06-13 16:54:40.775: E/AndroidRuntime(1387): at android.view.View.measure(View.java:15848)
06-13 16:54:40.775: E/AndroidRuntime(1387): at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1905)
06-13 16:54:40.775: E/AndroidRuntime(1387): at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1104)
06-13 16:54:40.775: E/AndroidRuntime(1387): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1284)
06-13 16:54:40.775: E/AndroidRuntime(1387): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1004)
06-13 16:54:40.775: E/AndroidRuntime(1387): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5481)
06-13 16:54:40.775: E/AndroidRuntime(1387): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
06-13 16:54:40.775: E/AndroidRuntime(1387): at android.view.Choreographer.doCallbacks(Choreographer.java:562)
06-13 16:54:40.775: E/AndroidRuntime(1387): at android.view.Choreographer.doFrame(Choreographer.java:532)
06-13 16:54:40.775: E/AndroidRuntime(1387): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
06-13 16:54:40.775: E/AndroidRuntime(1387): at android.os.Handler.handleCallback(Handler.java:730)
06-13 16:54:40.775: E/AndroidRuntime(1387): at android.os.Handler.dispatchMessage(Handler.java:92)
06-13 16:54:40.775: E/AndroidRuntime(1387): at android.os.Looper.loop(Looper.java:137)
06-13 16:54:40.775: E/AndroidRuntime(1387): at android.app.ActivityThread.main(ActivityThread.java:5103)
06-13 16:54:40.775: E/AndroidRuntime(1387): at java.lang.reflect.Method.invokeNative(Native Method)
06-13 16:54:40.775: E/AndroidRuntime(1387): at java.lang.reflect.Method.invoke(Method.java:525)
06-13 16:54:40.775: E/AndroidRuntime(1387): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
06-13 16:54:40.775: E/AndroidRuntime(1387): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
06-13 16:54:40.775: E/AndroidRuntime(1387): at dalvik.system.NativeStart.main(Native Method)
1 回答
这里可能有错误:
您使用相同的ID来获取
ImageView
和TextView
.由于此ID表示
ImageView
,因此myTitle
显然为null,当您尝试执行此操作时会导致NullPointerException
:因此,根据您的XML文件更改ID,它应该工作 .