比较XML字符串从Java类当项在ListView中点击 [英] Compare XML String From Java Class When Item In ListView Is Clicked

查看:129
本文介绍了比较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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆