Здравствуйте, мне нужна Ваша помощь в отображении данных из базы данных в действии, я много пытался, но понятия не имею, как это сделать. Я создаю какое-то приложение погоды. Он содержит данные в базе данных на устройстве. Существует класс DataBaseHandler, который возвращает список со всеми точками.Android нужна помощь, отображающая вещи из базы данных sqlite
public List<Spot> getUserSpotList(int id){
List<Spot> spotList = new ArrayList<Spot>();
String selectQuery = "SELECT " +SPOT_ID+","+ SPOT_NAME + ","+ SPOT_LATITUDE + ","+SPOT_LONGITUDE+","+SPOT_WIND_SPEED +","+SPOT_WEATHER_ICON+
" FROM " + TABLE_SPOT + " WHERE "+SPOT_USER_ID + "="+id;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do {
Spot spot = new Spot();
spot.setSpot_id(Integer.parseInt(cursor.getString(0)));
spot.setSpotName(cursor.getString(1));
spot.setSpotLatitude(cursor.getString(2));
spot.setSpotLongitude(cursor.getString(3));
spot.setWindSpeed(Double.parseDouble(cursor.getString(4)));
spot.setSpotWeatherIcon(cursor.getString(5));
// Adding User to list
spotList.add(spot);
} while (cursor.moveToNext());
}
return spotList;
}
и у меня есть активность с ListView XML в ведьму я хочу, чтобы отобразить некоторые вещи из кода выше, основываясь на другом RelativeLayout для одного элемента. SpotActivity.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.example.mk.rcwindy.SpotActivity">
<ListView
android:id="@+id/listLajout"
android:layout_width="wrap_content"
android:layout_height="400dp"
android:layout_weight="1"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true" />
</RelativeLayout>
А вот Относительный макет для одного элемента в списке выше. Я хотел бы связать SpotName с базой данных с TextView id = SpotName, Windspeed из базы данных с помощью Windspeed Text View и отображать изображение в ImageView на основе SpotWeatherIcon из базы данных. spotlista_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:padding="6dip"
android:id="@android:id/list">
<ImageView
android:id="@+id/SpotAvilabilityIcon"
android:layout_width="20dp"
android:layout_height="match_parent"
android:background="@color/green_apple"/>
<ImageView
android:id="@+id/WeatherIcon"
android:layout_width="70dp"
android:layout_height="match_parent"
android:layout_toLeftOf="@+id/WindSpeed"
android:scaleType="centerInside"
/>
<TextView
android:id="@+id/WindSpeed"
android:text=""
android:textSize="30dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@+id/WindSpeedUnit"
android:layout_gravity="center"
android:layout_centerVertical="true"/>
<TextView
android:text="m/s"
android:textSize="30dp"
android:id="@+id/WindSpeedUnit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentTop="true"
android:layout_marginLeft="10dp"
android:layout_toRightOf="@+id/SpotAvilabilityIcon"
android:layout_toStartOf="@+id/WeatherIcon"
android:layout_toLeftOf="@+id/WeatherIcon"
android:layout_centerVertical="true">
<TextView
android:id="@+id/SpotName"
android:text=""
android:textSize="40dp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:layout_centerVertical="true"/>
</FrameLayout>
</RelativeLayout>
А вот код активности SpotActivity
public class SpotActivity extends ActionBarActivity {
int loggedUserId;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_spot);
Intent intent = getIntent();
if (null != intent) {
loggedUserId = intent.getIntExtra("logged", 0);
}
String text = "logged user id = "+loggedUserId;
Toast t1 = Toast.makeText(getApplicationContext(), text, Toast.LENGTH_SHORT);
t1.show();
}
public int userIdSender(){
return loggedUserId;
}
@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_spot, 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;
}
if (id== R.id.action_new){
Intent intent = new Intent(this, SpotAddActivity.class);
intent.putExtra("logged",loggedUserId);
startActivity(intent);
}
return super.onOptionsItemSelected(item);
}
Спасибо за помощь! Я пытался это сделать и все еще испытываю большие проблемы, поэтому теперь я прошу помощи. Это школьный проект, над которым я работаю, и это последнее, что мне нужно сделать, чтобы заставить приложение работать. Показать материал: D
Где находится ваш список адаптеров? – Karakuri
У меня нет одного, вероятно, из того, что я знаю, это часть, где мне нужна помощь от Тебя. Я пытаюсь полностью понять адаптеры, но все же не могу заставить их работать с моим приложением. @Karakuri –
начать с документа http://developer.android.com/guide/topics/ui/layout/listview.html – njzk2