我一直在试图找出在我的Android应用程序中处理本地数据库访问的最佳方法.我在每个活动中都创建了一个数据库连接对象,但这似乎是一种非常低效的方法.做了一些研究我偶然发现了这个讨论.使用服务似乎是一种很好的做事方式,但我无法正常工作.这是我有的:
服务:
public class DBservice extends Service {
private final static String TAG = "net.iamcorbin.frolfcard";
public DBconn db;
private DBbinder mDatabaseBinder = new DBbinder();
@Override
public void onCreate() {
super.onCreate();
Log.d(TAG,"DBservice : onCreate");
mDatabaseBinder.mDatabaseService = this;
this.db = new DBconn(getApplicationContext());
this.db.open();
}
@Override
public IBinder onBind(Intent intent) {
Log.d(TAG,"DBservice : onBind");
return mDatabaseBinder;
}
@Override
public int onStartCommand(Intent intent, int flags, int startID) {
Log.d(TAG,"DBservice : onStartCommand");
return Service.START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
Log.d(TAG,"DBservice : …Run Code Online (Sandbox Code Playgroud) 我正在努力尝试使用android的ListView multipleChoice模式.这是我想要做的:
我在游戏设置屏幕中有一个"玩家"按钮.单击它时,它会打开另一个活动,其中包含CheckedTextViews中数据库中所有玩家的multipleChoice ListView.我有这个工作正常,当你点击一个播放器时,他们将通过查询添加到游戏中或从游戏中移除到game_players表.
我遇到的问题是设置ListView,以便在活动打开时最初检查已添加到游戏中的玩家.
我试图通过遍历ListView活动中的整个列表来执行此操作,但这不起作用,因为无法访问当前不可见的视图以进行检查.
所以现在我正在尝试在bindView中的扩展SimpleCursorAdapter中执行此操作,但我甚至无法使用这个简单的代码:
@Override
public void bindView(View _view, Context _context, Cursor _cursor) {
String name = c.getString(c.getColumnIndexOrThrow(from[0]));
this.player = (CheckedTextView)_view.findViewById(to[0]);
this.player.setText(name);
this.player.setChecked(true);
}
Run Code Online (Sandbox Code Playgroud)
它使用setText()正确设置了播放器的名称,但是我无法在bindView中检查任何框.还有其他地方我应该这样做,还是我只是做错了?
android ×2