我正在尝试创建一个列表,并且从列表中单击某个项目我想访问其详细信息,虽然我尝试使用该应用程序但该应用程序仍无法运行:
ListView list = (ListView) findViewById(R.layout.activity_database);
希望从我的MainActivity访问它,我也尝试过:
ListView list = getListView();
但我没有成功 这是我的contactListActivity:
public class ContactListActivity extends ListActivity {
private UsersDataSource datasource;
ListView list = (ListView) findViewById(R.layout.activity_database);
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_database);
datasource = new UsersDataSource(this);
datasource.open();
List<User> values = datasource.getAllUsers();
ArrayAdapter<User> adapter = new ArrayAdapter<User>(this,
android.R.layout.simple_list_item_1, values);
setListAdapter(adapter);
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
//TODO Auto-generated method stub
Intent intent = new Intent(ContactListActivity.this, User.class);
intent.putExtra("USER_ID", id);
startActivity(intent);
}
});
}
public void onClick(View view) {
@SuppressWarnings("unchecked")
ArrayAdapter<User> adapter = (ArrayAdapter<User>) getListAdapter();
User user = null;
switch (view.getId()) {
case R.id.add:
String[] logins = new String[] { "hal", "sal", "saf" };
int nextInt = new Random().nextInt(3);
user = datasource.createUser(logins[nextInt], noms[nextInt],prenoms[nextInt] , tels[nextInt]);
adapter.add(user);
break;
case R.id.delete:
if (getListAdapter().getCount() > 0) {
user = (User) getListAdapter().getItem(0);
datasource.deleteUser(user);
adapter.remove(user);
}
break;
}
adapter.notifyDataSetChanged();
}
@Override
protected void onResume() {
datasource.open();
super.onResume();
}
@Override
protected void onPause() {
datasource.close();
super.onPause();
}
}
和activity_database.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/group"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<Button
android:id="@+id/add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Add_New"
android:onClick="onClick"/>
<Button
android:id="@+id/delete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Delete_First"
android:onClick="onClick"/>
</LinearLayout>
<ListView
android:id="@android:id/list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello" />
</LinearLayout>
答案 0 :(得分:2)
您应该使用list = getListView()
方法拨打onCreate()
。请注意,活动中的ListView在系统调用onCreate()
之前不会被夸大。特别是,当您依赖于活动布局时,不应初始化内联或构造函数中的任何数据成员。
答案 1 :(得分:0)
为什么要为ListActivity设置ContentView? ListActivity具有默认布局,它只是ListView元素。如果删除setContentView并将list = getListView();
放入onCreate()
方法,它应该可以正常工作。