【发布时间】:2016-07-22 03:39:58
【问题描述】:
import android.content.Context;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.Toast;
import com.nusecond.suredeal.app.R;
import com.nusecond.suredeal.app.suredeal.adapter.CustomAdapter;
import com.nusecond.suredeal.app.suredeal.adapter.CustomPromoAdapter;
import java.util.ArrayList;
public class Promo extends AppCompatActivity {
GridView gv;
Context context;
ArrayList programName;
public static String[] programNameList={"AppleMacBook","HP_note_Book","LG_NEXUS","NokiaLumia","SamsungRT","SONY_BRAVIA","Sansui"};
public static int [] programImages={R.drawable.apple,R.drawable.hp,R.drawable.nexus,R.drawable.lumia,R.drawable.fridge,R.drawable.tv,R.drawable.tv1};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gv=(GridView)findViewById(R.id.gridView1);
//gv.setAdapter(new CustomPromoAdapter(this,programNameList,programImages));
gv.setAdapter(new CustomPromoAdapter(this,programNameList,programImages));
}
}
- 这是我在 GridView 中显示图像和文本的 Activity。
- 我在其他活动中为此使用 Intent。
- 我在使用 setAdapter 方法时遇到错误。
- 下面是我的适配器。
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.nusecond.suredeal.app.R;
import com.nusecond.suredeal.app.suredeal.activity.MainActivity;
import com.nusecond.suredeal.app.suredeal.activity.Promo;
/**
* Created by ns2 on 2/4/16.
*/
public class CustomPromoAdapter extends BaseAdapter{
ImageView imageView;
TextView textView;
String [] result;
Context context;
int [] imageId;
private static LayoutInflater inflater=null;
public CustomPromoAdapter(Promo promo, String[] programNameList, int[] programImages) {
// TODO Auto-generated constructor stub
result=programNameList;
context=promo;
imageId=programImages;
inflater = ( LayoutInflater )context.
getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return result.length;
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View view;
view=inflater.inflate(R.layout.promo_gridlist,null);
textView=(TextView)view.findViewById(R.id.textView1);
imageView=(ImageView)view.findViewById(R.id.imageView1);
imageView.setImageResource(imageId[position]);
textView.setText(imageId[position]);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, "You Clicked " + result[position], Toast.LENGTH_LONG).show();
}
});
return view;
}
}
- 这是我的适配器,我不知道哪里出了问题。
- 启动此活动时,我的应用崩溃了。
致命异常:主要 进程:com.nusecond.sureeal.app.suredeal,PID:25273 java.lang.RuntimeException:无法启动活动 组件信息{com.nusecond.suredeal.app.suredeal/com.nusecond.suredeal.app.suredeal.activity.Promo}: java.lang.NullPointerException:尝试调用虚拟方法'void android.widget.GridView.setAdapter(android.widget.ListAdapter)' 空对象引用 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 在 android.app.ActivityThread.-wrap11(ActivityThread.java) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5417) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 引起:java.lang.NullPointerException:尝试调用虚拟 方法'无效 android.widget.GridView.setAdapter(android.widget.ListAdapter)' 空对象引用 在 com.nusecond.suredeal.app.suredeal.activity.Promo.onCreate(Promo.java:36) 在 android.app.Activity.performCreate(Activity.java:6237) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 在 android.app.ActivityThread.-wrap11(ActivityThread.java) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5417) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
这是我的错误日志谁能帮我解决这个问题。
【问题讨论】:
-
在您的 activity_main.xml 文件中检查 gridView1。根据堆栈跟踪,您的 gridview (gv) 为空。
-
是的,老板,我的 Activity_main.xml 指向了其他一些布局......谢谢
标签: android gridview listadapter