【发布时间】:2015-01-15 22:16:34
【问题描述】:
GetView位置始终为0。按照http://www.codelearn.org/android-tutorial/android-listview所示的基本概念,我的代码如下:
public void DisplayUserList()
{ // Get data list from SQL Database
UserList = mySQLiteHelper.getUserList(ACTIVE);
// Get ListView
user_listview_control = (ListView) findViewById(R.id.user_listview);
// Get Adapter
userAdapter = new UserAdapter();
// Bind it all together
user_listview_control.setAdapter(userAdapter);
} // end DisplayUserList()
// User List Base Adapter
public class UserAdapter extends BaseAdapter {
@Override
public int getCount() {
return UserList.size();
}
@Override
public Structures.user_struct getItem(int arg0){
return UserList.get(arg0);
}
@Override
public long getItemId(int arg0){return arg0;}
@Override
public View getView(int position, View arg1, ViewGroup arg2){
if (arg1 == null){
LayoutInflater inflater = (LayoutInflater) Settings.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
try {
arg1 = inflater.inflate(R.layout.userlist_item, arg2, false);
}
catch (Exception ex){
String errorMessage = ex.getMessage();
}
}
TextView username = (TextView)arg1.findViewById(R.id.username);
TextView firstname = (TextView)arg1.findViewById(R.id.userfirstname);
TextView lastname = (TextView)arg1.findViewById(R.id.userlastname);
TextView lastlogin = (TextView)arg1.findViewById(R.id.userlastlogin);
UserData = UserList.get(position); //(always zero)
username.setText(user.username);
firstname.setText(user.user_firstname);
lastname.setText(user.user_lastname);
if (user.user_lastlogin_date.length() == 0) {
lastlogin.setText("--");
} else {
lastlogin.setText(user.user_lastlogin_date);
}
// OnClickListener for this row.
arg1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(Settings.this, "User Clicked", Toast.LENGTH_SHORT).show();
//Integer position = (Integer) view.getTag();
}
});
return arg1;
}
} // end UserAdapter()
sqlite 数据表有三项在 UserList 中返回,定义为:
public List<Structures.user_struct> UserList;
当调用 user_listview_control.setAdapter 时,在调用 getView() 之前重复调用 getCount()(返回值 3)。在 getView() 中,位置始终为 0。生成的 ListView 显示为一行,仅显示数据库的第一项。 [注意:如果我强制位置 = 1 或 2,代码将返回该列表中的下一个用户]。我不知道我在哪里。会不会是限制显示的xml布局?当我运行上面引用的示例代码时,它确实作为一个简单的 xml 布局工作。所以???
【问题讨论】:
-
发布您的布局文件
userlist_item.xml -
你能发布 mySQLiteHelper.getUserList(ACTIVE);方法?
-
你能发布你的“user_listview”xml吗?
标签: android listview baseadapter