2012-03-20 58 views
0

我試圖在點擊列表視圖中的列表項目時更改圖像。這是脂肪酶說的使用,但它不起作用。該日誌文件指出setimageresource行中存在空指針異常。有任何想法嗎?無法從列表視圖中更改圖像

listview.setOnItemClickListener(new OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
      long arg3) { 

     if(arg2 == 0){ 
      image.setImageResource(R.drawable.lighton); 
     } 
      else 

       image.setImageResource(R.drawable.lightoff); 
    } 
}); 

logcat的

ERROR/AndroidRuntime(712): Uncaught handler: thread main exiting due to uncaught exception 
ERROR/AndroidRuntime(712): java.lang.NullPointerException 
ERROR/AndroidRuntime(712):  at com.Sonny.HCIProject.LightSetting$1.onItemClick(LightSetting.java:42) 
ERROR/AndroidRuntime(712):  at android.widget.AdapterView.performItemClick(AdapterView.java:283) 
ERROR/AndroidRuntime(712):  at android.widget.ListView.performItemClick(ListView.java:3132) 
ERROR/AndroidRuntime(712):  at android.widget.AbsListView$PerformClick.run(AbsListView.java:1620) 
ERROR/AndroidRuntime(712):  at android.os.Handler.handleCallback(Handler.java:587) 
ERROR/AndroidRuntime(712):  at android.os.Handler.dispatchMessage(Handler.java:92) 
ERROR/AndroidRuntime(712):  at android.os.Looper.loop(Looper.java:123) 
ERROR/AndroidRuntime(712):  at android.app.ActivityThread.main(ActivityThread.java:3948) 
ERROR/AndroidRuntime(712):  at java.lang.reflect.Method.invokeNative(Native Method) 
03-20 03:54:48.702: ERROR/AndroidRuntime(712):  at java.lang.reflect.Method.invoke(Method.java:521) 
03-20 03:54:48.702: ERROR/AndroidRuntime(712):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782) 
03-20 03:54:48.702: ERROR/AndroidRuntime(712):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540) 
03-20 03:54:48.702: ERROR/AndroidRuntime(712):  at dalvik.system.NativeStart.main(Native Method) 

的繪製對象文件夾只圖像文件

+1

把你的完整logcat .... – 2012-03-20 03:42:24

+0

如果可能的話給我們展示你的可繪製資源文件夾結構。 – Calvin 2012-03-20 03:44:54

+0

我認爲你沒有正確獲取你的imageview id – 2012-03-20 03:48:30

回答

0

是什麼形象?它在哪裏?是否初始化?請,更多上市。

也許你應該嘗試

YOUR_ACTIVITY_NAME.this.image 

或許不是

+0

圖像是一個imageView設置爲視圖ID – codingNightmares 2012-03-20 04:08:49

+0

這裏是代碼'code'ImageView圖像; \t image =(ImageView)findViewById(R.drawable.lighton); – codingNightmares 2012-03-20 04:09:47

0

如果圖像是在列表視圖中的項目,那麼你必須這樣做:

@Override 
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
      long arg3) { 
      ImageView img=(ImageView)arg1.findViewById(R.id.image); 
      img.setImageDrawable(getResourses().getDrawable(R.drawable.drawable1)); 
    } 
}); 

如果它不是在列表視圖中的一個項目,你的代碼應該工作,如果你已經實例化

+0

我已經實例化了imageview給了它在xml中的imageview的id,但仍然沒有任何東西 – codingNightmares 2012-03-20 18:37:26

+0

圖像是列表視圖中的項目?或外部列表視圖? – 2012-03-21 02:11:41

0

堆棧跟蹤說問題m在線42.如果你100%確定這是42線,則

image.setImageResource(R.drawable.lighton); 

然後確定。如果不是,請將第42行作爲評論。

因此,假設是42行,

要麼

  1. 檢查進口在top--確保它是import my.project.R;而不是import android.R;

  2. image爲空。你是否實例化它?

基本上,無論您嘗試設置什麼或試圖設置它爲空。一方或另一方,或者如果你不幸,都是。

+0

好的,所以我已經像我說的那樣導入了我的項目,也沒有任何東西,我也爲圖像實例化了一個imageview,像lightOn = new ImageView(LightSetting.this); \t lightOn =(ImageView)findViewById(R.id.lightimage);然後在onclick方法我仍然得到在這個相同的地方爲空的exceptio錯誤\t \t \t \t lightOn.setImageResource(R.drawable.lighton); 我完全難倒了 – codingNightmares 2012-03-20 18:33:30