Android 从第二个微调器数据库获取ID
我有两个旋转器和一个按钮。 微调器从sqlite数据库获取数据。 第一个包含城市名称,第二个包含城市中的地方 cities表包含以下列:id、en_name、v_name、code places表包含以下列:注册号、城市号、注册名、注册名 我在第一个微调器中显示v_name,在第二个微调器中显示reg_name,但我需要获得reg_id,以便在用户触摸按钮时显示购物地点。 因为我需要它来获取json 如何将注册表id从数据库获取到按钮单击方法Android 从第二个微调器数据库获取ID,android,sqlite,android-spinner,Android,Sqlite,Android Spinner,我有两个旋转器和一个按钮。 微调器从sqlite数据库获取数据。 第一个包含城市名称,第二个包含城市中的地方 cities表包含以下列:id、en_name、v_name、code places表包含以下列:注册号、城市号、注册名、注册名 我在第一个微调器中显示v_name,在第二个微调器中显示reg_name,但我需要获得reg_id,以便在用户触摸按钮时显示购物地点。 因为我需要它来获取json 如何将注册表id从数据库获取到按钮单击方法 Shop.javafragment public
Shop.javafragment
public class Shops extends Fragment implements AdapterView.OnItemSelectedListener {
DatabaseHelper db;
MaterialSpinner materialSpinner;
MaterialSpinner materialSpinner2;
String getPlacesURL = "http://*/get_places/";// + cityId
String getShopsURL = "http://*/get_shops/"; // + cityId / + placeId
String getShopsFullURL;
String cityID;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
public boolean isNetworkConnectionAvailable() {
ConnectivityManager cm = (ConnectivityManager) getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = cm.getActiveNetworkInfo();
if (info == null) return false;
NetworkInfo.State network = info.getState();
return (network == NetworkInfo.State.CONNECTED || network == NetworkInfo.State.CONNECTING);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View myView = inflater.inflate(R.layout.shop_fragment, container, false);
db = new DatabaseHelper(getContext());
materialSpinner = (MaterialSpinner) myView.findViewById(R.id.shop_city_MS);
materialSpinner2 = (MaterialSpinner) myView.findViewById(R.id.shop_place_MS);
Button submitBtn = (Button) myView.findViewById(R.id.Shops_submit_btn);
ArrayList citiesList = db.getRecords(DatabaseHelper.getTableCities(), DatabaseHelper.getCitiesColumnVName());
ArrayAdapter a = new ArrayAdapter<>(getContext(), android.R.layout.simple_spinner_dropdown_item, citiesList);
materialSpinner.setAdapter(a);
materialSpinner.setOnItemSelectedListener(this);
if (isNetworkConnectionAvailable()) {
ArrayList<String> citiesIDsList = db.getRecords(DatabaseHelper.getTableCities(), DatabaseHelper.getCitiesColumnId());
} else {
//snackbar to check connection
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
if (position == -1) {
materialSpinner2.setClickable(false);
} else {
String databaseID = db.getValueFromColumn(position, DatabaseHelper.getTableCities(), DatabaseHelper.getCitiesColumnId());
cityID = databaseID;
ArrayList placesList = db.getListOfValuesFromColumn(DatabaseHelper.getTablePlaces(), DatabaseHelper.getPlacesCityId(), databaseID, DatabaseHelper.getPlacesRegNameV());
if (placesList.size() == 0)
// empty list
materialSpinner2.setAdapter(new ArrayAdapter<>(getContext(), android.R.layout.simple_spinner_dropdown_item, placesList));
String merged = getShopsURL + databaseID;
getShopsFullURL = merged + "/";
materialSpinner2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
if (position == -1) {
//snackbar enter required place
} else {
// what to do here?
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
}
要检索您的注册ID,您需要一个简单的查询,如下所示。假设regName是从微调器中选择的字符串
String regName = "your selected spinner item";
// The table to query
String from = DatabaseHelper.getTablePlaces();
// The columns to return
String[] projection = {
DatabaseHelper.getPlacesRegId()
};
// The columns for the WHERE clause
String selection = DatabaseHelper.getPlacesRegNameAr() + " = ?"; //or .getPlacesRegNameEn() ?
// The values for the WHERE clause
String[] selectionArgs = { regName };
Cursor cursor = db.getReadableDatabase().query(
from,
projection,
selection,
selectionArgs,
null,
null,
null
);
while(cursor.moveToNext()){
// Get ID
long id = cursor.getLong(cursor.getColumnIndexOrThrow(DatabaseHelper.getPlacesRegId()));
}
cursor.close();
要检索您的注册ID,您需要一个简单的查询,如下所示。假设regName是从微调器中选择的字符串
String regName = "your selected spinner item";
// The table to query
String from = DatabaseHelper.getTablePlaces();
// The columns to return
String[] projection = {
DatabaseHelper.getPlacesRegId()
};
// The columns for the WHERE clause
String selection = DatabaseHelper.getPlacesRegNameAr() + " = ?"; //or .getPlacesRegNameEn() ?
// The values for the WHERE clause
String[] selectionArgs = { regName };
Cursor cursor = db.getReadableDatabase().query(
from,
projection,
selection,
selectionArgs,
null,
null,
null
);
while(cursor.moveToNext()){
// Get ID
long id = cursor.getLong(cursor.getColumnIndexOrThrow(DatabaseHelper.getPlacesRegId()));
}
cursor.close();
你能展示一下你的places合同类吗?你是说数据库结构吗?我想看看你定义places结构的类table@GiacomoLai我更新了关于数据库模式创建的问题,这非常混乱。我建议您使用有关sqlite数据库创建最佳实践的官方指南。你能展示一下你的places合同类吗?你是说数据库结构吗?我想看看你定义places结构的类table@GiacomoLai我更新了关于数据库模式创建的问题,这非常混乱。我建议您使用有关sqlite数据库创建最佳实践的官方指南。