我对 Android 很陌生,我需要一些指导。
到目前为止,我有两个活动。第一个包含一个 ActionBar 和一个 ListView。我希望 ListView 填充包含 TextView 和 CheckBox 的行。文本由从数据库读取的用户名表示。ActionBar 具有用于操作的按钮:“新建”和“删除”。“新”打开一个新活动,将新用户添加到数据库中,删除操作应从列表和数据库中删除选中的条目。屏幕:
主要活动:http: //imgur.com/ILljQ
创建个人资料活动:http: //imgur.com/EbpD3
为了获得这些,我使用了 SQLiteHelper 和数据库的数据源以及 ListView 的自定义 ArrayAdapter。我有一个问题和一些顾虑,如下所列。
1. 问题:当我添加一个新用户时,我只能在使用后退按钮退出应用程序后看到 ListView 中的更改。
2. 自定义 ArrayAdapter 是一个很好的解决方案,还是我应该使用 CursorAdapter?单击时,列表项应将与其关联的信息用于另一个活动/片段。下面是我的自定义适配器。它现在可以工作,但下一步是实现删除操作,我不完全确定我是如何做到的。这是我需要建议的地方。谢谢!
public class CustomUserAdapter extends ArrayAdapter<UserProfile>{
ArrayList<UserProfile> users;
private LayoutInflater inflater;
public CustomUserAdapter(Context context, ArrayList<UserProfile> users) {
// TODO Auto-generated constructor stub
super(context, R.layout.users_list_row, users);
this.users = users;
inflater = LayoutInflater.from(context);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
UserProfile user = users.get(position);
CheckBox checkBox;
TextView textView;
if(convertView == null){
convertView = inflater.inflate(R.layout.users_list_row, null);
checkBox = (CheckBox) convertView.findViewById(R.id.checkElement);
textView = (TextView) convertView.findViewById(R.id.textElement);
//tag row
convertView.setTag(new UserHolder(textView, checkBox));
} else {
UserHolder userHolder = (UserHolder) convertView.getTag();
checkBox = userHolder.getCheckBox();
textView = userHolder.getUserText();
}
//tag checkbox
checkBox.setTag(user);
//checkbox listener
checkBox.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
checkBox.setChecked(false);
textView.setText(user.getUsername());
return convertView;
}
}