Android 从上下文启动新活动在自定义ListView适配器中不起作用
我制作了一个自定义列表视图来解析JSON对象并在列表中处理它!一切正常,但当我试图通过单击ListView项目打开一个新的意图时,应用程序崩溃了!我还使用内存缓存来存储从JSON对象url解析的图像,以在ListView中显示它Android 从上下文启动新活动在自定义ListView适配器中不起作用,android,android-intent,android-listview,android-context,Android,Android Intent,Android Listview,Android Context,我制作了一个自定义列表视图来解析JSON对象并在列表中处理它!一切正常,但当我试图通过单击ListView项目打开一个新的意图时,应用程序崩溃了!我还使用内存缓存来存储从JSON对象url解析的图像,以在ListView中显示它 public class ListViewAdapter extends BaseAdapter { // Declare Variables Context context; LayoutInflater inflater; Arra
public class ListViewAdapter extends BaseAdapter {
// Declare Variables
Context context;
LayoutInflater inflater;
ArrayList<HashMap<String, String>> data;
ImageLoader imageLoader;
HashMap<String, String> resultp = new HashMap<String, String>();
public ListViewAdapter(Context context,
ArrayList<HashMap<String, String>> arraylist) {
this.context = context;
data = arraylist;
imageLoader = new ImageLoader(context);
}
@Override
public int getCount() {
return data.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
public View getView(final int position, View convertView, ViewGroup parent) {
TextView rank;
TextView country;
TextView population;
ImageView flag;
inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View itemView = inflater.inflate(R.layout.listview_item, parent, false);
// Get the position
resultp = data.get(position);
rank = (TextView) itemView.findViewById(R.id.rank);
country = (TextView) itemView.findViewById(R.id.country);
population = (TextView) itemView.findViewById(R.id.population);
flag = (ImageView) itemView.findViewById(R.id.flag);
rank.setText(resultp.get(MainActivity.RANK));
country.setText(resultp.get(MainActivity.COUNTRY));
population.setText(resultp.get(MainActivity.POPULATION));
imageLoader.DisplayImage(resultp.get(MainActivity.FLAG), flag);
itemView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
resultp = data.get(position);
Intent intent = new Intent(context, SingleItemView.class);
intent.putExtra("rank", resultp.get(MainActivity.RANK));
intent.putExtra("country", resultp.get(MainActivity.COUNTRY));
intent.putExtra("population",resultp.get(MainActivity.POPULATION));
intent.putExtra("flag", resultp.get(MainActivity.FLAG));
context.startActivity(intent);
}
});
return itemView;
}
}
公共类ListViewAdapter扩展了BaseAdapter{
//声明变量
语境;
充气机;
阵列列表数据;
图像加载器;
HashMap resultp=新的HashMap();
公共ListViewAdapter(上下文,
ArrayList(ArrayList){
this.context=上下文;
数据=数组列表;
imageLoader=新的imageLoader(上下文);
}
@凌驾
public int getCount(){
返回data.size();
}
@凌驾
公共对象getItem(int位置){
返回null;
}
@凌驾
公共长getItemId(int位置){
返回0;
}
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
文本视图等级;
TextView国家/地区;
文本视图人口;
图像视图标志;
充气器=(充气器)上下文
.getSystemService(上下文布局\充气机\服务);
视图项视图=充气机。充气(R.layout.listview\u项,父项,false);
//获得职位
resultp=data.get(位置);
rank=(TextView)itemView.findViewById(R.id.rank);
country=(TextView)itemView.findViewById(R.id.country);
population=(TextView)itemView.findViewById(R.id.population);
flag=(ImageView)itemView.findViewById(R.id.flag);
rank.setText(resultp.get(MainActivity.rank));
country.setText(resultp.get(MainActivity.country));
setText(resultp.get(MainActivity.population));
imageLoader.DisplayImage(resultp.get(MainActivity.FLAG),FLAG);
setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图arg0){
resultp=data.get(位置);
意向意向=新意向(上下文,SingleItemView.class);
intent.putExtra(“rank”,resultp.get(MainActivity.rank));
intent.putExtra(“国家”,resultp.get(MainActivity.country));
intent.putExtra(“填充”,resultp.get(MainActivity.population));
intent.putExtra(“标志”,resultp.get(MainActivity.flag));
背景。开始触觉(意图);
}
});
返回项目视图;
}
}
Logcat输出:
12-25 14:50:50.929: E/AndroidRuntime(1501): FATAL EXCEPTION: main
12-25 14:50:50.929: E/AndroidRuntime(1501): Process: com.android.jsonparse, PID: 1501
12-25 14:50:50.929: E/AndroidRuntime(1501): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.android.jsonparse/com.android.jsonparse.SingleItemView}: java.lang.NullPointerException
12-25 14:50:50.929: E/AndroidRuntime(1501): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2102)
12-25 14:50:50.929: E/AndroidRuntime(1501): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2226)
12-25 14:50:50.929: E/AndroidRuntime(1501): at android.app.ActivityThread.access$700(ActivityThread.java:135)
12-25 14:50:50.929: E/AndroidRuntime(1501): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1397)
12-25 14:50:50.929: E/AndroidRuntime(1501): at android.os.Handler.dispatchMessage(Handler.java:102)
12-25 14:50:50.929: E/AndroidRuntime(1501): at android.os.Looper.loop(Looper.java:137)
12-25 14:50:50.929: E/AndroidRuntime(1501): at android.app.ActivityThread.main(ActivityThread.java:4998)
12-25 14:50:50.929: E/AndroidRuntime(1501): at java.lang.reflect.Method.invokeNative(Native Method)
12-25 14:50:50.929: E/AndroidRuntime(1501): at java.lang.reflect.Method.invoke(Method.java:515)
12-25 14:50:50.929: E/AndroidRuntime(1501): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
12-25 14:50:50.929: E/AndroidRuntime(1501): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
12-25 14:50:50.929: E/AndroidRuntime(1501): at dalvik.system.NativeStart.main(Native Method)
12-25 14:50:50.929: E/AndroidRuntime(1501): Caused by: java.lang.NullPointerException
12-25 14:50:50.929: E/AndroidRuntime(1501): at android.content.ContextWrapper.getCacheDir(ContextWrapper.java:230)
12-25 14:50:50.929: E/AndroidRuntime(1501): at com.androidbegin.jsonparsetutorial.FileCache.<init>(FileCache.java:18)
12-25 14:50:50.929: E/AndroidRuntime(1501): at com.androidbegin.jsonparsetutorial.ImageLoader.<init>(ImageLoader.java:34)
12-25 14:50:50.929: E/AndroidRuntime(1501): at com.androidbegin.jsonparsetutorial.SingleItemView.<init>(SingleItemView.java:16)
12-25 14:50:50.929: E/AndroidRuntime(1501): at java.lang.Class.newInstanceImpl(Native Method)
12-25 14:50:50.929: E/AndroidRuntime(1501): at java.lang.Class.newInstance(Class.java:1208)
12-25 14:50:50.929: E/AndroidRuntime(1501): at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
12-25 14:50:50.929: E/AndroidRuntime(1501): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2093)
12-2514:50:50.929:E/AndroidRuntime(1501):致命异常:main
12-25 14:50:50.929:E/AndroidRuntime(1501):进程:com.android.jsonparse,PID:1501
12-25 14:50:50.929:E/AndroidRuntime(1501):java.lang.RuntimeException:无法实例化活动组件信息{com.android.jsonparse/com.android.jsonparse.SingleItemView}:java.lang.NullPointerException
12-25 14:50:50.929:E/AndroidRuntime(1501):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2102)
12-25 14:50:50.929:E/AndroidRuntime(1501):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2226)
12-25 14:50:50.929:E/AndroidRuntime(1501):在android.app.ActivityThread.access$700(ActivityThread.java:135)
12-25 14:50:50.929:E/AndroidRuntime(1501):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1397)
12-25 14:50:50.929:E/AndroidRuntime(1501):在android.os.Handler.dispatchMessage(Handler.java:102)上
12-25 14:50:50.929:E/AndroidRuntime(1501):在android.os.Looper.loop(Looper.java:137)
12-25 14:50:50.929:E/AndroidRuntime(1501):位于android.app.ActivityThread.main(ActivityThread.java:4998)
12-25 14:50:50.929:E/AndroidRuntime(1501):位于java.lang.reflect.Method.Invokenactive(本机方法)
12-25 14:50:50.929:E/AndroidRuntime(1501):在java.lang.reflect.Method.invoke(Method.java:515)
12-25 14:50:50.929:E/AndroidRuntime(1501):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
12-25 14:50:50.929:E/AndroidRuntime(1501):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
12-25 14:50:50.929:E/AndroidRuntime(1501):在dalvik.system.NativeStart.main(本机方法)
12-25 14:50:50.929:E/AndroidRuntime(1501):由以下原因引起:java.lang.NullPointerException
12-25 14:50:50.929:E/AndroidRuntime(1501):位于android.content.ContextWrapper.getCacheDir(ContextWrapper.java:230)
12-25 14:50:50.929:E/AndroidRuntime(1501):在com.androidbegin.jsonparsetutorial.FileCache。(FileCache.java:18)
12-25 14:50:50.929:E/AndroidRuntime(1501):位于com.androidbegin.jsonparsetutorial.ImageLoader。(ImageLoader.java:34)
12-25 14:50:50.929:E/AndroidRuntime(1501):在com.androidbegin.jsonparsetutorial.SingleItemView。(SingleItemView.java:16)
12-25 14:50:50.929:E/AndroidRuntime(1501):位于java.lang.Class.newInstanceImpl(本机方法)
12-25 14:50:50.929:E/AndroidRuntime(1501):位于java.lang.Class.newInstance(Class.java:1208)
12-25 14:50:50.929:E/AndroidRuntime(1501):在android.app.Instrumentation.newActivity(Instrumentation.java:1061)上
12-25 14:50:50.929:E/AndroidRuntime(1501):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2093)
在哪一行抛出错误??context.startActivity(intent);上传SingleItemView的代码,根本原因在SingleItemView中