Android 从SQLite获取微调器中选定项的id,并将id值添加到SQLite表中
我是Android编程的新手。我试图用SQLite数据库中的Android 从SQLite获取微调器中选定项的id,并将id值添加到SQLite表中,android,android-studio,spinner,android-spinner,Android,Android Studio,Spinner,Android Spinner,我是Android编程的新手。我试图用SQLite数据库中的leagues表中的league\u名称来填充微调器。然后,我想将微调器中所选项目的id的值传递给另一个方法addTeam,该方法将该值添加到另一个表的列中。目前,我已经能够在微调器中查看league\u名称,但我不确定如何获取所选项目的id。我已经能够将项目设置为id值,即1,2,3,4,并将该值传递给addTeam方法,但用户不知道他们正在选择哪个联赛 联赛表格示例: 下面是我的代码: public class add_team e
leagues
表中的league\u名称来填充微调器。然后,我想将微调器中所选项目的id
的值传递给另一个方法addTeam
,该方法将该值添加到另一个表的列中。目前,我已经能够在微调器中查看league\u名称
,但我不确定如何获取所选项目的id
。我已经能够将项目设置为id值,即1,2,3,4
,并将该值传递给addTeam
方法,但用户不知道他们正在选择哪个联赛
联赛表格示例:
下面是我的代码:
public class add_team extends AppCompatActivity {
//Calls DatabaseHelper Class
DatabaseHelper myDb;
EditText team_name, image;
Button add_team, get_teams;
Spinner league;
ArrayList < String > leagues = new ArrayList < String > ();
ArrayAdapter < String > adapter;
int leagueIdParse = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.add_team);
myDb = new DatabaseHelper(this);
team_name = (EditText) findViewById(R.id.edit_team_name);
image = (EditText) findViewById(R.id.edit_image);
add_team = (Button) findViewById(R.id.insertTeams);
get_teams = (Button) findViewById(R.id.view_teams);
league = (Spinner) findViewById(R.id.edit_league_id);
adapter = new ArrayAdapter < String > (this, android.R.layout.simple_list_item_1, leagues);
addTeam();
if (leagues == null) {
leagues = new ArrayList < String > ();
}
leagues.clear();
Cursor cursor = myDb.getAllLeagues();
while (cursor.moveToNext()) {
//Extract the data
int leagueId = cursor.getInt(0);
String leagueName = cursor.getString(1);
leagues.add(leagueName);
}
league.setAdapter(adapter);
league.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView < ? > parent, View view, int position, long id) {
try {
leagueIdParse = Integer.parseInt(parent.getItemAtPosition(position).toString());
} catch (NumberFormatException nfe) {
System.out.println("Could not parse " + nfe);
}
}
@Override
public void onNothingSelected(AdapterView < ? > parent) {
}
});
}
public void addTeam() {
add_team.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
Team team = new Team();
team.setTeamName(team_name.getText().toString());
team.setPath(image.getText().toString());
team.setLeague_id(leagueIdParse);
myDb.createTeam(team);
}
}
);
}
}
为此,您需要一个自定义适配器来填充微调器。。。在android中有一个setTag(…)
选项。您可以使用关联的leage名称设置id,并且在item onclick事件中,您可以轻松地从getTag方法获取id
,
或者,在获取所选文本后,您需要再次点击数据库以检索相应的id。。。但我认为这不是一个好主意 为此,您需要一个自定义适配器来填充微调器。。。在android中有一个setTag(…)
选项。您可以使用关联的leage名称设置id,并且在item onclick事件中,您可以轻松地从getTag方法获取id
,
或者,在获取所选文本后,您需要再次点击数据库以检索相应的id。。。但我认为这不是一个好主意 不,不,不,不要使用ArrayAdapter
或任何自定义参数,而是使用SimpleCorsorAdapter
,当在onItemSelected
中选择时,使用最后一个参数,甚至更好的方法是在addTeam
中使用getSelectedItemId()
,不,不,不要使用ArrayAdapter
或任何自定义参数,改为使用SimpleCorsOrAdapter
,当在OnItems中选择时,使用最后一个参数,或者更好地使用league.getSelectedItemId()
中的addTeam
public class add_team extends AppCompatActivity {
//Calls DatabaseHelper Class
DatabaseHelper myDb;
EditText team_name, image;
Button add_team, get_teams;
Spinner league;
ArrayList < String > leagues = new ArrayList < String > ();
ArrayAdapter < String > adapter;
int leagueIdParse = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.add_team);
myDb = new DatabaseHelper(this);
team_name = (EditText) findViewById(R.id.edit_team_name);
image = (EditText) findViewById(R.id.edit_image);
add_team = (Button) findViewById(R.id.insertTeams);
get_teams = (Button) findViewById(R.id.view_teams);
league = (Spinner) findViewById(R.id.edit_league_id);
adapter = new ArrayAdapter < String > (this, android.R.layout.simple_list_item_1, leagues);
addTeam();
if (leagues == null) {
leagues = new ArrayList < String > ();
}
leagues.clear();
Cursor cursor = myDb.getAllLeagues();
while (cursor.moveToNext()) {
//Extract the data
int leagueId = cursor.getInt(0);
String leagueName = cursor.getString(1);
leagues.add(leagueName);
}
league.setAdapter(adapter);
league.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView < ? > parent, View view, int position, long id) {
try {
leagueIdParse = Integer.parseInt(parent.getItemAtPosition(position).toString());
} catch (NumberFormatException nfe) {
System.out.println("Could not parse " + nfe);
}
}
@Override
public void onNothingSelected(AdapterView < ? > parent) {
}
});
}
public void addTeam() {
add_team.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
Team team = new Team();
team.setTeamName(team_name.getText().toString());
team.setPath(image.getText().toString());
team.setLeague_id(leagueIdParse);
myDb.createTeam(team);
}
}
);
}
}
public Cursor getAllLeagues() {
//Create SQLiteDatabase instance
SQLiteDatabase db = this.getReadableDatabase();
String[] columns = {
ID,
LEAGUE_NAME
};
//Return query to return cursor object
return db.query(LEAGUES_TABLE, columns, null, null, null, null, null);
}