我在登录页面输入详细信息(用户名和密码),然后我在ListView中显示应用程序中注册的所有用户的所有详细信息。
我使用ImageView,用户名和密码填充ListView。
当我将页面从Login页面重定向到HomePage(我在其中有ListView)时,我收到了null异常的错误。
Homepage.java
public class HomePage extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ListView listView=(ListView)findViewById(R.id.listUserDetails);
DBhelperClass obj1=new DBhelperClass(this);
Cursor f=obj1.display();
AdapterForHomePage obj=new AdapterForHomePage(this,f,0);
listView.setAdapter(obj);
}
}
AdapterForHomePage.java(这是一个用于填充ListView的自定义CursorAdapter)。
public class AdapterForHomePage extends CursorAdapter {
LayoutInflater inflater;
public AdapterForHomePage(Context context, Cursor c, int i) {
super(context, c);
inflater=LayoutInflater.from(context);
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
View v= inflater.inflate(R.layout.homepagelist,parent,false);
return v;
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
TextView name=(TextView)view.findViewById(R.id.displayName);
TextView emailId=(TextView)view.findViewById(R.id.displayEmail);
// ImageView phoneCall=(ImageView)view.findViewById(R.id.displayCallImage);
TextView phoneNumber=(TextView)view.findViewById(R.id.displayPhone);
String n=cursor.getString(cursor.getColumnIndex("NAME"));
String e=cursor.getString(cursor.getColumnIndex("EMAILID"));
String p=cursor.getString(cursor.getColumnIndex("PHONENUMBER"));
name.setText(n);
emailId.setText(e);
phoneNumber.setText(p);
}
}
我的DBhelper
这是在HomePage.java类中调用的显示函数
public Cursor display()
{
SQLiteDatabase db=this.getReadableDatabase();
Cursor cs=db.rawQuery("SELECT * FROM USERINFO",null);
return cs;
}
我得到的错误是:
Java.lang.RuntimeException: Unable to start activity
ComponentInfo{com.example.hsports.bandpop/com.example.hsports.bandpop.HomePage} java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference
我在CustomAdapter对象中收到错误 我该如何解决这个问题?
答案 0 :(得分:1)
你没有在oncreate()上完成setContentView(R.layout.yourlayout)。
答案 1 :(得分:0)
您需要致电
setContentView(R.layout.you_activity_layout);
在进行ListView的引用之前
答案 2 :(得分:0)
在对布局中的setContentView
进行任何引用之前,您必须致电View
。
setContentView(R.layout.your_layout)
创建对您的布局的引用。没有它,您的活动不知道您所处的布局,因此它不知道视图(在您的情况下,您的ListView
)。
您有两种选择:
setContentView(R.layout.yourLayout)
ListView listView=(ListView)findViewById(R.id.listUserDetails);
如果您不想设置布局,可以使用LayoutInflater
,如下所示:
View v = getActivity().getLayoutInflater().inflate(R.layout.yourLayout,null);
然后,当您想要获得ListView
时,请使用v.findViewById
代替findViewById