java使用数组适配器填充列表视图
我正在尝试使用阵列适配器填充列表。我有3门课,自行车,自定义适配器和UseCustomAdapter。我有一个例子,我已经通过比较它与我的,似乎无法找出为什么它只是不运行!只要说,每次我试着加载它时,它就停止工作了。代码如下:
自行车。爪哇
package com.example.tasktwo;
public class Bike {
private String title;
private String imageName;
//Constructor
Bike (String title, String imageName) {
this.title= title;
this.imageName = imageName;
}
public void setTitle(String title){
this.title = title;
}
public void setImage(String imageName){
this.imageName = imageName;
}
public String getBikeTitle(){
return title;
}
public String getBikeImageName(){
return imageName;
}
}
客户适配器。爪哇
public class CustomAdapter extends ArrayAdapter<Bike> {
private final Context context;
//List of Walk Objects
private ArrayList<Bike> bikes;
//Receives the context and the list of walk objects
public CustomAdapter (Context context, ArrayList<Bike> bikes) {
super(context, R.layout.bike_view, bikes);
this.context = context;
this.bikes = bikes;
}
@SuppressLint("ViewHolder")
public View getView(int position, View convertView, ViewGroup parent) {
Bike bike = bikes.get(position);
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.bike_view, parent, false);
TextView textView = (TextView) rowView.findViewById(R.id.bike_names);
textView.setText(bike.getBikeTitle());
ImageView imageView = (ImageView) rowView.findViewById(R.id.bike_image);
Resources res = context.getResources();
int imageId = res.getIdentifier(bike.getBikeImageName(), "drawable", "com.example.tasktwo");
imageView.setImageResource(imageId);
return rowView;
}
}
使用CustomerAdapter。爪哇
package com.example.tasktwo;
public class UseCustomAdapter extends ListActivity {
ArrayList<Bike> bikes = new ArrayList<Bike>();
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
bikes.add(new Bike("Honda", "honda"));
bikes.add(new Bike("Suzuki", "suzuki"));
bikes.add(new Bike("Kawasaki", "kawasaki"));
bikes.add(new Bike("KTM", "ktm"));
CustomAdapter adapter = new CustomAdapter(this, bikes);
setListAdapter(adapter);
}
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
Bike b = bikes.get(position);
Toast.makeText(this,"You selected the " + b.getBikeTitle()
+ "Motocross Bike",Toast.LENGTH_SHORT).show();
}
}
日志:
03-10 14:34:53.240: E/AndroidRuntime(1009): FATAL EXCEPTION: main
03-10 14:34:53.240: E/AndroidRuntime(1009): Process: com.example.tasktwo, PID: 1009
03-10 14:34:53.240: E/AndroidRuntime(1009): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.tasktwo/com.example.tasktwo.BikeList}: java.lang.NullPointerException
03-10 14:34:53.240: E/AndroidRuntime(1009): at 安卓.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
03-10 14:34:53.240: E/AndroidRuntime(1009): at 安卓.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
03-10 14:34:53.240: E/AndroidRuntime(1009): at 安卓.app.ActivityThread.access$800(ActivityThread.java:135)
03-10 14:34:53.240: E/AndroidRuntime(1009): at 安卓.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
03-10 14:34:53.240: E/AndroidRuntime(1009): at 安卓.os.Handler.dispatchMessage(Handler.java:102)
03-10 14:34:53.240: E/AndroidRuntime(1009): at 安卓.os.Looper.loop(Looper.java:136)
03-10 14:34:53.240: E/AndroidRuntime(1009): at 安卓.app.ActivityThread.main(ActivityThread.java:5017)
03-10 14:34:53.240: E/AndroidRuntime(1009): at java.lang.reflect.Method.invokeNative(Native Method)
03-10 14:34:53.240: E/AndroidRuntime(1009): at java.lang.reflect.Method.invoke(Method.java:515)
03-10 14:34:53.240: E/AndroidRuntime(1009): at com.安卓.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
03-10 14:34:53.240: E/AndroidRuntime(1009): at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:595)
03-10 14:34:53.240: E/AndroidRuntime(1009): at dalvik.system.NativeStart.main(Native Method)
03-10 14:34:53.240: E/AndroidRuntime(1009): Caused by: java.lang.NullPointerException
03-10 14:34:53.240: E/AndroidRuntime(1009): at com.example.tasktwo.BikeList.onCreate(BikeList.java:20)
03-10 14:34:53.240: E/AndroidRuntime(1009): at 安卓.app.Activity.performCreate(Activity.java:5231)
03-10 14:34:53.240: E/AndroidRuntime(1009): at 安卓.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
03-10 14:34:53.240: E/AndroidRuntime(1009): at 安卓.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
03-10 14:34:53.240: E/AndroidRuntime(1009): ... 11 more
AndroidManifest。xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:安卓="http://schemas.安卓.com/apk/res/安卓"
package="com.example.tasktwo"
安卓:versionCode="1"
安卓:versionName="1.0" >
<uses-sdk
安卓:minSdkVersion="19"
安卓:targetSdkVersion="19" />
<application
安卓:allowBackup="true"
安卓:icon="@drawable/ic_launcher"
安卓:label="@string/app_name"
安卓:theme="@style/AppTheme" >
<activity
安卓:name=".BikeList"
安卓:label="@string/app_name" >
<intent-filter>
<action 安卓:name="安卓.intent.action.MAIN" />
<category 安卓:name="安卓.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
# 1 楼答案
根据你的回答,我认为这是解决办法
注意,名称为MainActivity,这是默认值。此名称取决于主活动类的名称。因此,将其设置为任何类名。 Android Studio或Eclipse的问题是,当您开始更改项目名称时,所有引用都没有正确更改