2014-02-12 3 views
0

Hy парней!LayoutInflater: получение данных с базовым адаптером и макеты не вставлены

У меня большая проблема. Я пытаюсь отобразить данные из базы данных sqlite в списке, используя базовый адаптер. для этого я создал класс для моего базового блока, где я его определяю. Everthing отлично работает, я получаю 10 строк из курсора, но ничего не отображается. Возможно, я должен заменить Layoutinflater на другое место. Пожалуйста, помогите мне!

Моя ошибка - это что-то с id.

Вот мой adapterclass:

public class RouteAdapterActivity extends BaseAdapter{ 

    Context context; 
    ArrayList<DefineRouteActivity> arraylist; 

    public RouteAdapterActivity(Context context, ArrayList<DefineRouteActivity> list) { 
     this.context = context; 
     arraylist = list; 
    } 
    @Override 
    public int getCount() { 

     return arraylist.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     return arraylist.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 

    @Override 
    public View getView(int position, View view, ViewGroup viewGroup) { 
     DefineRouteActivity routeItems = arraylist.get(position); 
     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     view = inflater.inflate(R.layout.outputlayout,null); 

     TextView tvDeparture = (TextView)view.findViewById(R.id.txOutputDeparture); 
     tvDeparture.setText(routeItems.getAbfahrtszeit()); 
     TextView tvDuration = (TextView)view.findViewById(R.id.txOutputDuration); 
     tvDuration.setText(routeItems.getDauer()); 
     TextView tvTransition = (TextView)view.findViewById(R.id.txOutputTransition); 
     tvTransition.setText(routeItems.getUmstieg()); 

     return view; 
    } 
} 

вот мой курсор адаптер:

public void getRoute() { 
    lvList = (ListView)findViewById(R.id.lvView); 
    mdbH = new DatabaseHelperActivity(this); 
    cursor = mdbH.fetchallRoutes(mdbH); 
    ArrayList<DefineRouteActivity> route = new ArrayList<DefineRouteActivity>(); 
    RouteAdapterActivity adapter = new RouteAdapterActivity(PlanOutputActivity.this, route); 

    lvList.setAdapter(adapter); 



} 

и, наконец, вот мой макет, который должен быть вставлен в ListView:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/outputlayout" 
    android:orientation="horizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="50dp" 
    android:layout_marginTop="10dp" 
    android:background="@color/ligthgrey" 
    android:onClick="layoutOutput"> 

    <TextView 
     android:id="@+id/txOutputDeparture" 
     android:layout_width="130dp" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:text="Abfahrt " 
     android:textColor="@color/black" 
     android:layout_alignParentLeft="true" 
     android:maxLength="@android:integer/config_shortAnimTime" 
     android:layout_marginTop="10dp"/> 

    <TextView 
     android:id="@+id/txOutputDuration" 
     android:layout_width="100dp" 
     android:layout_height="wrap_content" 
     android:layout_toRightOf="@id/txOutputDeparture" 
     android:text="Dauer" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:layout_marginTop="10dp"/> 

    <TextView 
     android:id="@+id/txOutputTransition" 
     android:layout_width="100dp" 
     android:layout_height="wrap_content" 
     android:layout_toRightOf="@id/txOutputDuration" 
     android:text="Umstieg" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:layout_marginTop="10dp"/> 

</RelativeLayout> 

Вот мой курсор Заявление:

SELECT f.id, strftime('%H:%M', f.abfahrt) AS Abfahrt," + 
       "strftime('%H:%M', f.ankunft) AS Ankunft," + 
       "strftime('%H:%M', strftime('%s',f.ankunft)- strftime('%s',f.abfahrt), 'unixepoch') AS Dauer," + 
       "r.name AS Route," + 
       "count(u.fahrt_id) AS Umstiege " + 
       "FROM scotty_fahrt f " + 
       "JOIN scotty_haltestelle start ON f.start_id = start.id " + 
       "JOIN scotty_haltestelle ziel ON f.ziel_id = ziel.id " + 
       "JOIN scotty_route r ON f.route_id = r.id " + 
       "LEFT OUTER JOIN scotty_umstiegsstelle u ON f.id = u.fahrt_id " + 
       "WHERE start.name = 'Haibach ob der Donau Ortsmitte' " + 
       "AND ziel.name = 'Neufelden Busterminal (Schulzentrum)' " + 
       "GROUP BY u.fahrt_id 

Вот мой DefineRouteActivity:

public class DefineRouteActivity { 
    private String abfahrtszeit; 
    private String dauer; 
    private String umstieg; 

    public DefineRouteActivity(String abfahrtszeit, String dauer, String umstieg) 
    { 
     this.abfahrtszeit = abfahrtszeit; 
     this.dauer = dauer; 
     this.umstieg = umstieg; 
    } 

    public String getAbfahrtszeit() { 
     return abfahrtszeit; 
    } 


    public String getDauer() { 
     return dauer; 
    } 

    public String getUmstieg() { 
     return umstieg; 
    } 
} 

Пожалуйста, помогите мне !!

+1

Я не понял вашу ошибку, вы можете положить логарифм? – Dyna

+0

oh жаль неправильный вопрос, я редактирую его rigth now – schocka94

ответ

0

, когда вы делаете эти строки:

И вы пройдете путь к адаптеру маршрут пуст. Вы должны преобразовать свой курсор в Arraylist.

Знаете ли вы, как перейти от курсора к массиву объектов? Если создать метод, который вы можете сделать это:

route= getRouteFromCursor(cursor); 

, а затем создать адаптер, как вы делаете сейчас.

EDIT: Поскольку я не понимаю язык в вашем коде, я приведу вам пример.
Вставьте следующий метод (изменить ColumnIndex имя, которое у вас есть в вашей базе данных):

ArrayList<DefineRouteActivity> getRouteFromCursor(Cursor cursor) { 
    ArrayList<DefineRouteActivity> routes = new ArrayList<DefineRouteActivity>(); 

    for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) { 

     try { 
      String abfahrtszeit = cursor.getString(cursor 
        .getColumnIndex("abfahrtszeit")); // here you put the column name of the value you want to retrieve 

      String dauer = cursor.getString(cursor.getColumnIndex("dauer")); 

      String umstieg = cursor.getString(cursor 
        .getColumnIndex("umstieg")); 

      routes.add(new DefineRouteActivity(abfahrtszeit, dauer, umstieg)); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
    return routes; 
} 

Теперь, прежде чем создать свой адаптер изменить код следующим образом:

cursor = mdbH.fetchallRoutes(mdbH); 
ArrayList<DefineRouteActivity> route = new ArrayList<DefineRouteActivity>(); 
route= getRouteFromCursor(cursor); 
RouteAdapterActivity adapter = new RouteAdapterActivity(PlanOutputActivity.this, route); 

Весь набор ,

+0

Я не могу это сделать ... пожалуйста, помогите мне, я добавил DefineRouteActivity – schocka94

Смежные вопросы