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();