wu88299
wu88299
2015-09-17 03:17
采纳率: 50%
浏览 2.2k

Android 获取listview数据 然后赋值给popupwindow用于显示报空指针

能得到数据但是给Textview赋值却报空指针!
下边贴代码。
gv.setOnItemClickListener(new OnItemClickListener() {

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

// WindowManager.LayoutParams lp=getWindow().getAttributes();
// lp.alpha = 0.4f;
// getWindow().setAttributes(lp);

                food= (FoodInfo)data.get(position); // 数据类获取数据


                Toast.makeText(getApplicationContext(),    
                        food.getFoodName(),   
                        Toast.LENGTH_SHORT).show(); //这里可以正常显示,说明得到了数据

                TextView name=(TextView) findViewById(R.id.popup_tv1);//popupwindow
                name.setText(food.getFoodName()); //  setText 报空指针


                initPopuWindow1(arg0); // 加载弹出框

        }
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • aiynmimi
    木大白易 2015-09-18 08:05
    已采纳

    先加载TextView name所在的布局view,然后这样得到你的name,TextView name=(TextView)view.findViewById(R.id.popup_tv1);

    点赞 评论
  • bdmh
    bdmh 2015-09-17 03:22

    你自己调试一下,两个地方可能为null
    name和food,你看看是不是

    点赞 评论
  • bdmh
    bdmh 2015-09-17 03:23

    最好用arg3,position,如果你有headerview的话,这个postion会有问题,而且position从1开始,你要用也要position-1

    点赞 评论
  • wu88299
    wu88299 2015-09-17 03:53

    我已经找到原因了,。 我的name对应的R.id.popup_tv1 不在 当前类对应的layout ,activity_main 中 而是我contentView1 = mLayoutInflater.inflate(R.layout.popupwindow_food, null); 添加的自定义布局中, 这样我该怎样把值传过去啊!

    点赞 评论
  • wu88299
    wu88299 2015-09-17 04:09

    09-17 12:09:04.231: E/AndroidRuntime(28241): FATAL EXCEPTION: main
    09-17 12:09:04.231: E/AndroidRuntime(28241): Process: com.example.shaomapapptest, PID: 28241
    09-17 12:09:04.231: E/AndroidRuntime(28241): java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
    09-17 12:09:04.231: E/AndroidRuntime(28241): at com.sm.activity.MainActivity$3.onItemClick(MainActivity.java:193)
    09-17 12:09:04.231: E/AndroidRuntime(28241): at android.widget.AdapterView.performItemClick(AdapterView.java:310)
    09-17 12:09:04.231: E/AndroidRuntime(28241): at android.widget.AbsListView.performItemClick(AbsListView.java:1285)
    09-17 12:09:04.231: E/AndroidRuntime(28241): at android.widget.AbsListView$PerformClick.run(AbsListView.java:3375)
    09-17 12:09:04.231: E/AndroidRuntime(28241): at android.widget.AbsListView$3.run(AbsListView.java:4354)
    09-17 12:09:04.231: E/AndroidRuntime(28241): at android.os.Handler.handleCallback(Handler.java:815)
    09-17 12:09:04.231: E/AndroidRuntime(28241): at android.os.Handler.dispatchMessage(Handler.java:104)
    09-17 12:09:04.231: E/AndroidRuntime(28241): at android.os.Looper.loop(Looper.java:194)
    09-17 12:09:04.231: E/AndroidRuntime(28241): at android.app.ActivityThread.main(ActivityThread.java:5691)
    09-17 12:09:04.231: E/AndroidRuntime(28241): at java.lang.reflect.Method.invoke(Native Method)
    09-17 12:09:04.231: E/AndroidRuntime(28241): at java.lang.reflect.Method.invoke(Method.java:372)
    09-17 12:09:04.231: E/AndroidRuntime(28241): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959)
    09-17 12:09:04.231: E/AndroidRuntime(28241): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754)

    这是log

    点赞 评论
  • dcxy0
    Q544471255 2015-09-17 06:59

    你可以用LayoutInflate把你那个popuptv1所在的layout布局文件加载到当期类里面,然后再去查找相应的控件,在赋值试试,。

    点赞 评论

相关推荐