2012-06-12 5 views
0

Мой класс активностьAndroid ListView OnItemClickListener событие не работает

private String[] mStrings2={"Title 01","Title 02"}; 
private String[] mStrings = {"Link to the image1", "Link to the image2"}; 

MyAdapter adapter; 

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

      adapter=new LazyAdapter(this, mStrings, mStrings2); 
      subList.setAdapter(adapternew);      

     } 
    }); 


MyAdapter class (MyAdapter.java) 

    private Activity activity; 
    private String[] data; 
    private String[] data2; 
    private static LayoutInflater inflater=null; 
    public ImageLoader imageLoader; 

//Constructor 
public LazyAdapter(Activity a, String[] d, String[] mStrings2) { 
     activity = a; 
     data=d; 
     data2=mStrings2; 
     inflater = LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     imageLoader=new ImageLoader(activity.getApplicationContext()); 
    } 

Когда я нажимаю на Первый элемент списка, я хочу, чтобы загрузить элементы второго массива. Но при выполнении кода я получаю «NullPointerException». Как это исправить. Прошу вас посоветовать.

Редактировать ....

06-12 14:21:42.499: E/AndroidRuntime(1429): java.lang.NullPointerException 
06-12 14:21:42.499: E/AndroidRuntime(1429):  at com.java.hotelapp.Item_List$1.onItemClick(Item_List.java:106) 
06-12 14:21:42.499: E/AndroidRuntime(1429):  at android.widget.AdapterView.performItemClick(AdapterView.java:282) 
06-12 14:21:42.499: E/AndroidRuntime(1429):  at android.widget.AbsListView.performItemClick(AbsListView.java:1037) 
06-12 14:21:42.499: E/AndroidRuntime(1429):  at android.widget.AbsListView$PerformClick.run(AbsListView.java:2449) 
06-12 14:21:42.499: E/AndroidRuntime(1429):  at android.widget.AbsListView$1.run(AbsListView.java:3073) 
06-12 14:21:42.499: E/AndroidRuntime(1429):  at android.os.Handler.handleCallback(Handler.java:587) 
06-12 14:21:42.499: E/AndroidRuntime(1429):  at android.os.Handler.dispatchMessage(Handler.java:92) 
06-12 14:21:42.499: E/AndroidRuntime(1429):  at android.os.Looper.loop(Looper.java:132) 
06-12 14:21:42.499: E/AndroidRuntime(1429):  at android.app.ActivityThread.main(ActivityThread.java:4123) 
06-12 14:21:42.499: E/AndroidRuntime(1429):  at java.lang.reflect.Method.invokeNative(Native Method) 
06-12 14:21:42.499: E/AndroidRuntime(1429):  at java.lang.reflect.Method.invoke(Method.java:491) 
06-12 14:21:42.499: E/AndroidRuntime(1429):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) 
06-12 14:21:42.499: E/AndroidRuntime(1429):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) 
06-12 14:21:42.499: E/AndroidRuntime(1429):  at dalvik.system.NativeStart.main(Native Method) 
+0

показать логарифм, где произошел NPE. – ariefbayu

ответ

0

Я не могу видеть декларацию adapternew адаптера, так что может быть null ..

subList.setAdapter(adapternew);   

Эта линия должна быть,

adapter = new LazyAdapter(MyActivity.this, mStrings, mStrings2); 
subList.setAdapter(adapter); 
+0

yep, я исправил его, но все же, когда я нажимаю на элемент первого списка, получая NullPointerException – Senps

+0

Теперь опубликуйте отчет своего приложения logcat .. – user370305

+0

Также укажите полный код вашего класса активности ... – user370305

0

Возможно другое предложение:

mainList.setOnItemClickListener(new AdapterView.OnItemClickListener() 

Может быть, что mainList == null?

И, пожалуйста, укажите правильный код и точный момент и строку отказа. Конкретная часть stacktrace также будет приятной.

0
ListView lv = (ListView)this.findViewById(R.id.listviewid); 
lv.setItemsCanFocus(false); 

or try onlistitemclick 

@Override  
protected void onListItemClick(ListView lv, View v, int position, long id) {  
    // TODO Auto-generated method stub 
    super.onListItemClick(lv, v, position, id); 
} 
Смежные вопросы