比较XML字符串从Java类当项在ListView中点击 [英] Compare XML String From Java Class When Item In ListView Is Clicked
本文介绍了比较XML字符串从Java类当项在ListView中点击的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
以下code不起作用,这是假设打印发现列表视图项产品的一个点击时。
但是以下code返回一个错误,应用程序关闭,我是否需要使用上下文如果又如何,我使用它通过ID找到字符串XML所以因此我并不真的需要占用资源上下文或做我,反正有什么错我的code?在先进的感谢。
XML文件:
<字符串数组名=titles_product>
<项目> ProductOne< /项目>
<项目> ProductTwo< /项目>
<项目> ProductThree< /项目>
...
的Java类
公共类ListViewAdapterProduct延伸BaseAdapter {上下文mContext;
的String [] productTitleArray; view.setOnClickListener(新OnClickListener(){ @覆盖
公共无效的onClick(查看为arg0){ 资源解析度= getResources();
productTitleArray = res.getStringArray(R.array.titles_products); 对于(字符串productTitle:productTitleArray)
{
如果(productTitle.equals(ProductOne))
{
Log.d(味精,发现);
}
其他
{
Log.d(味精,未找到);
}
}
}
});
完整的logcat:
03-30 13:58:13.633:E / AndroidRuntime(775):致命异常:主要
03-30 13:58:13.633:E / AndroidRuntime(775):显示java.lang.NullPointerException
03-30 13:58:13.633:E / AndroidRuntime(775):在com.twostarii.test.ListViewAdapterproduct $ 1.onClick(ListViewAdapterproduct.java:93)
03-30 13:58:13.633:E / AndroidRuntime(775):在android.view.View.performClick(View.java:4204)
03-30 13:58:13.633:E / AndroidRuntime(775):在android.view.View $ PerformClick.run(View.java:17355)
03-30 13:58:13.633:E / AndroidRuntime(775):在android.os.Handler.handleCallback(Handler.java:725)
03-30 13:58:13.633:E / AndroidRuntime(775):在android.os.Handler.dispatchMessage(Handler.java:92)
03-30 13:58:13.633:E / AndroidRuntime(775):在android.os.Looper.loop(Looper.java:137)
03-30 13:58:13.633:E / AndroidRuntime(775):在android.app.ActivityThread.main(ActivityThread.java:5041)
03-30 13:58:13.633:E / AndroidRuntime(775):在java.lang.reflect.Method.invokeNative(本机方法)
03-30 13:58:13.633:E / AndroidRuntime(775):在java.lang.reflect.Method.invoke(Method.java:511)
03-30 13:58:13.633:E / AndroidRuntime(775):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:793)
03-30 13:58:13.633:E / AndroidRuntime(775):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
03-30 13:58:13.633:E / AndroidRuntime(775):在dalvik.system.NativeStart.main(本机方法)
03-30 13:58:16.173:I /流程(775):发送信号。 PID:775 SIG:9
03-30 13:58:17.063:D / dalvikvm(802):GC_FOR_ALLOC释放31K,6%免费2424K / 2576K,暂停36ms,总38ms
03-30 13:58:17.073:I / dalvikvm堆(802):成长堆(frag的情况下),以3.190MB为741952字节分配
03-30 13:58:17.203:D / dalvikvm(802):GC_FOR_ALLOC释放< 1K,5%的游离3147K / 3304K,暂停122ms,122ms总
03-30 13:58:17.273:D / dalvikvm(802):GC_CONCURRENT释放< 1K,5%的游离3147K / 3304K,暂停为4ms + 3ms的,总69ms
03-30 13:58:17.643:D / dalvikvm(802):GC_CONCURRENT释放3K,5%的游离3605K / 3768K,暂停70ms的+ 3ms内,共有120毫秒
03-30 13:58:17.846:D / libEGL(802):装载/system/lib/egl/libEGL_emulation.so
03-30 13:58:17.987:D /(802):HostConnection ::得到()新主机连接建立0x2a166f18,TID 802
03-30 13:58:18.055:D / libEGL(802):装载/system/lib/egl/libGLESv1_CM_emulation.so
03-30 13:58:18.063:D / libEGL(802):装载/system/lib/egl/libGLESv2_emulation.so
03-30 13:58:18.305:W / EGL_emulation(802):eglSurfaceAttrib没有实现
03-30 13:58:18.313:D / OpenGLRenderer(802):启用调试模式0
解决方案
使用Get资源上下文
...
资源解析度= mContext.getResources();
The following code doesn't work, it is suppose to print "Found" when listview item product one is clicked.
However the following code returns an error and application closes, do I need to use the Context and if so how, I'm using get resource which finds the strings xml by id so therefore i don't really need context or do I, anyway what's wrong with my code? thanks in advanced.
XML file:
<string-array name="titles_product">
<item>ProductOne</item>
<item>ProductTwo</item>
<item>ProductThree</item>
...
Java Class
public class ListViewAdapterProduct extends BaseAdapter {
Context mContext;
String[] productTitleArray;
view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Resources res = getResources();
productTitleArray = res.getStringArray(R.array.titles_products);
for (String productTitle : productTitleArray)
{
if(productTitle.equals("ProductOne"))
{
Log.d("Msg", "Found");
}
else
{
Log.d("Msg", "NOT Found");
}
}
}
});
Complete logcat:
03-30 13:58:13.633: E/AndroidRuntime(775): FATAL EXCEPTION: main
03-30 13:58:13.633: E/AndroidRuntime(775): java.lang.NullPointerException
03-30 13:58:13.633: E/AndroidRuntime(775): at com.twostarii.test.ListViewAdapterproduct$1.onClick(ListViewAdapterproduct.java:93)
03-30 13:58:13.633: E/AndroidRuntime(775): at android.view.View.performClick(View.java:4204)
03-30 13:58:13.633: E/AndroidRuntime(775): at android.view.View$PerformClick.run(View.java:17355)
03-30 13:58:13.633: E/AndroidRuntime(775): at android.os.Handler.handleCallback(Handler.java:725)
03-30 13:58:13.633: E/AndroidRuntime(775): at android.os.Handler.dispatchMessage(Handler.java:92)
03-30 13:58:13.633: E/AndroidRuntime(775): at android.os.Looper.loop(Looper.java:137)
03-30 13:58:13.633: E/AndroidRuntime(775): at android.app.ActivityThread.main(ActivityThread.java:5041)
03-30 13:58:13.633: E/AndroidRuntime(775): at java.lang.reflect.Method.invokeNative(Native Method)
03-30 13:58:13.633: E/AndroidRuntime(775): at java.lang.reflect.Method.invoke(Method.java:511)
03-30 13:58:13.633: E/AndroidRuntime(775): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
03-30 13:58:13.633: E/AndroidRuntime(775): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
03-30 13:58:13.633: E/AndroidRuntime(775): at dalvik.system.NativeStart.main(Native Method)
03-30 13:58:16.173: I/Process(775): Sending signal. PID: 775 SIG: 9
03-30 13:58:17.063: D/dalvikvm(802): GC_FOR_ALLOC freed 31K, 6% free 2424K/2576K, paused 36ms, total 38ms
03-30 13:58:17.073: I/dalvikvm-heap(802): Grow heap (frag case) to 3.190MB for 741952-byte allocation
03-30 13:58:17.203: D/dalvikvm(802): GC_FOR_ALLOC freed <1K, 5% free 3147K/3304K, paused 122ms, total 122ms
03-30 13:58:17.273: D/dalvikvm(802): GC_CONCURRENT freed <1K, 5% free 3147K/3304K, paused 4ms+3ms, total 69ms
03-30 13:58:17.643: D/dalvikvm(802): GC_CONCURRENT freed 3K, 5% free 3605K/3768K, paused 70ms+3ms, total 120ms
03-30 13:58:17.846: D/libEGL(802): loaded /system/lib/egl/libEGL_emulation.so
03-30 13:58:17.987: D/(802): HostConnection::get() New Host Connection established 0x2a166f18, tid 802
03-30 13:58:18.055: D/libEGL(802): loaded /system/lib/egl/libGLESv1_CM_emulation.so
03-30 13:58:18.063: D/libEGL(802): loaded /system/lib/egl/libGLESv2_emulation.so
03-30 13:58:18.305: W/EGL_emulation(802): eglSurfaceAttrib not implemented
03-30 13:58:18.313: D/OpenGLRenderer(802): Enabling debug mode 0
解决方案
Get resource using Context
...
Resources res = mContext.getResources();
这篇关于比较XML字符串从Java类当项在ListView中点击的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文