Android-从自定义ArrayList适配器内部更新SQLite表
背景: 我正在尝试为自定义Android-从自定义ArrayList适配器内部更新SQLite表,android,sqlite,listview,onclick,android-arrayadapter,Android,Sqlite,Listview,Onclick,Android Arrayadapter,背景: 我正在尝试为自定义列表视图创建自定义阵列适配器。我用来形成每一行的列表模板包含几个TextView列和一个按钮。 我使用SQLite表作为列表的源。 问题: 我希望按钮捕获当前时间,并将其写入与按钮所在行对应的列中的SQLite表[结果]。我不知道该怎么做 下面是包含ArrayList public class ResultsMenu extends ActionBarActivity { private static final String LOGTAG = "Logtag: " +
列表视图创建自定义阵列适配器
。我用来形成每一行的列表模板包含几个TextView
列和一个按钮。
我使用SQLite表作为列表的源。
问题:
我希望按钮
捕获当前时间,并将其写入与按钮
所在行对应的列中的SQLite表[结果]。我不知道该怎么做
下面是包含ArrayList
public class ResultsMenu extends ActionBarActivity {
private static final String LOGTAG = "Logtag: " + Thread.currentThread()
.getStackTrace()[2].getClassName(); // log tag for records
// sql elements for selecting boats
private String where = DBAdapter.KEY_RACE_ID + " = " + GlobalContent.activeRace.getId()
+ " AND " + DBAdapter.KEY_RESULTS_VISIBLE + " = 1";
private String orderBy = DBAdapter.KEY_BOAT_CLASS + " DESC ";
//instance of data source
RaceDataSource raceDataSource;
ResultDataSource resultDataSource;
// make a listview instance
ListView myList;
// make button instance for capturing finish time
Button buttonCaptureFinishTime;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_results_menu);
//wire data source and open
raceDataSource = new RaceDataSource(this);
resultDataSource = new ResultDataSource(this);
raceDataSource.open();
resultDataSource.open();
// wire list view
myList = (ListView) findViewById(R.id.lvResultList);
//wire button
buttonCaptureFinishTime = (Button) findViewById(R.id.btn_finish_time);
//set onclick listening for listview
myList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
GlobalContent.setResultsRowID(id);
Intent intent = new Intent(view.getContext(), ResultsEditForm.class);
startActivity(intent);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_results_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
protected void onResume() {
super.onResume();
Log.i(LOGTAG, " onResume Now");
raceDataSource.open(); // reopen the db
resultDataSource.open(); // reopen the db
//populateListView(); // need to build this
}
@Override
protected void onPause() {
super.onPause();
Log.i(LOGTAG, " onPause NOW");
raceDataSource.close(); // close db to reduce data leak
resultDataSource.close(); // close db to reduce data leak
}
public void populateListView(){
}
}在onClick
方法中,您可以创建数据库实例,打开它并相应地更新数据
DatabaseConnection database = new DatabaseConnection(context);
database.getWritableDatabase();
您可以在asyntask中执行更新数据库,单击adapater可能会将UI线程交给您。您可以在对数据库执行操作的class create方法中创建一个数据库帮助器类,然后从单击开始创建该类的实例并调用一个方法。我最终完成了此操作的一个版本。由于我的数据库已经打开,我只是将活动数据库实例作为ArrayAdapter实例构造函数中的参数传递。我在AA中创建了它的最终版本,然后从中运行更新方法。i、 e.ResultDataSource.UpdateFinishedTime(…)
DatabaseConnection database = new DatabaseConnection(context);
database.getWritableDatabase();