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个回答

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

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

wu88299
wu88299 我的name对应的R.id.popup_tv1 不在 activity_main 中,是不是这个原因。因为是自定义的popupwindow布局,我该怎么把这个值赋给它呢。
接近 5 年之前 回复

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

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

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

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问