Android-加载活动时访问ListView项
我有一个Android-加载活动时访问ListView项,android,listview,Android,Listview,我有一个列表视图中填充了relativelayouts,它们本身就有控件。问题是,在活动UI完全加载之前,我无法访问这些项目(我得到一个空指针异常。没有OnActivityLoaded()方法,下面是我尝试执行的操作: 正在尝试从OnStart()和OnResume()访问 我有一个自定义的适配器,但是我需要使用一些函数 都是主要活动,所以这是不可能的 使用处理程序.postDelayed在给定数量的 时间。这在高端设备上有效,但在低端设备上会延迟 加载时间不够(即使我将其设置为1000) ms
列表视图
中填充了relativelayouts
,它们本身就有控件。问题是,在活动UI完全加载之前,我无法访问这些项目(我得到一个空指针异常
。没有OnActivityLoaded()
方法,下面是我尝试执行的操作:
OnStart()
和OnResume()
访问适配器
,但是我需要使用一些函数
都是主要活动,所以这是不可能的处理程序.postDelayed
在给定数量的
时间。这在高端设备上有效,但在低端设备上会延迟
加载时间不够(即使我将其设置为1000)
ms)所以我仍然得到空指针异常
// These 4 widgets are ones from the relativelayout which is an item in the listview
homeSemester = (Spinner) findViewById(R.id.home_profile_semester);
homeSpecialty = (Spinner) findViewById(R.id.home_profile_specialty);
homefbPP = (ProfilePictureView) findViewById(R.id.home_profile_fbPP);
homefbName = (TextView) findViewById(R.id.home_profile_fbName);
// On click listeners
homeSemester.setOnItemSelectedListener(new OnItemSelectedListener()
{
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) {
// These functions need to be in the main activity (have access to widgets, savedInstance bundles and shared preferences
// Configure specialty
configSpecialty();
// Load Schedule
loadSchedule();
// Refresh contact list
loadContacts();
configurePush();
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
Toast.makeText(getApplication(), "Please select your Semester!", Toast.LENGTH_SHORT).show();
Log.e("Initialization", "No semester selected! This should not happen!");
}
});
homeSpecialty.setOnItemSelectedListener(new OnItemSelectedListener()
{
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) {
// Load schedule
loadSchedule();
// Refresh contact list
loadContacts();
// Save Data
saveData();
configurePush();
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
Log.e("Initialization", "No specialty selected! This should not happen!");
}
});
// All of these depend on homesemester and homespecialty
// Read data
readSemester();
readSpecialty();
// Show all button
contactAll.setOnClickListener(new OnClickListener()
{
public void onClick(View v) {
if(contactAll.isChecked())
loadAll();
else
loadContacts();
}
});
if(contactAll.isChecked())
loadAll();
else
loadContacts();
loadSchedule();
if (sharedPref.getInt("LoggedIn", 0) == 0)
{
// Actions taken on buttons click
fbLogin.setOnClickListener(new OnClickListener()
{
public void onClick(View v) {
if (fbLogin.getText().toString().equals("Log in with Facebook"))
{
// Welcome Message
ab.setSubtitle("Logging in...");
// Login to Facebook
NetAvailable = isNetworkAvailable();
if (NetAvailable)
{
logIn();
}
else
{
ab.setSubtitle("No Internet Connection!");
}
editor.putInt("LoggedIn", 1);
editor.commit();
}
else
{
// Log Out
AlertDialog.Builder builderfb = new AlertDialog.Builder(Launch.this);
builderfb.setTitle("Log Out")
.setMessage("Are you sure do you want to Log Out?\n\nNote: Logging out from Facebook will close the application. Next time you start ULFG2 App2Date, you will be prompted to Log in manually.")
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
editor.putInt("LoggedIn", 0);
editor.commit();
finish();
}
});
AlertDialog welcomeMsg = builderfb.create();
welcomeMsg.show();
}
}
});
}
else
{
fbLogin.setOnClickListener(new OnClickListener()
{
public void onClick(View v) {
// Log Out only is needed
AlertDialog.Builder builderfb = new AlertDialog.Builder(Launch.this);
builderfb.setTitle("Log Out")
.setMessage("Are you sure do you want to Log Out?\n\nNote: Logging out from Facebook will close the application. Next time you start ULFG2 App2Date, you will be prompted to Log in manually.")
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
editor.putInt("LoggedIn", 0);
editor.commit();
finish();
}
});
AlertDialog welcomeMsg = builderfb.create();
welcomeMsg.show();
}
});
}
homefbName.setText(sharedPref.getString("student_name", "Student"));
homefbPP.setProfileId(sharedPref.getString("student_id", ""));
}
如果调用代码的第一行(在编辑下),我将在
onCreate()
中得到null指针异常也发布您的代码。您必须显示您为listview、适配器和堆栈跟踪尝试的代码,从中可以获得空指针异常。setContentView在哪里?在onCreate()
!@Override public void onCreate(最终捆绑包savedInstanceState){super.onCreate的第一个开头(savedInstanceState);setContentView(R.layout.activity_launch);…}
ab = getSupportActionBar();
ab.setTitle("App2Date");
abDL = (DrawerLayout) findViewById(R.id.MainLayout);
abLV = (ListView) findViewById(R.id.list_slidermenu);
LayoutInflater mInflater = (LayoutInflater) getApplicationContext().getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
navDrawerItems = new ArrayList<View>();
navDrawerItems.add(mInflater.inflate(R.layout.drawer_profile, null));
adapter = new NDListAdapter(getApplicationContext(), navDrawerItems);
abLV.setAdapter(adapter);
abLV.setDivider(null);
abLV.setDividerHeight(0);
// setting the nav drawer list adapter
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
abDT = new ActionBarDrawerToggle(this, abDL,
R.drawable.ic_navigation_drawer,
R.string.drawer_open,
R.string.drawer_close)
{
public void onDrawerClosed(View view) {
getSupportActionBar().setTitle(R.string.drawer_close);
}
public void onDrawerOpened(View drawerView) {
getSupportActionBar().setTitle(R.string.drawer_open);
}
};
abDL.setDrawerListener(abDT);
abDT.setDrawerIndicatorEnabled(true);