Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用arrayadapter在listview中显示数据库中的数据_Android_Sqlite_Listview_Cursor_Android Arrayadapter - Fatal编程技术网

Android 使用arrayadapter在listview中显示数据库中的数据

Android 使用arrayadapter在listview中显示数据库中的数据,android,sqlite,listview,cursor,android-arrayadapter,Android,Sqlite,Listview,Cursor,Android Arrayadapter,嗨,伙计们 我有个问题。我的应用程序应在列表视图中显示所有路线。但是arrayadapter有点问题。如果我像这样尝试我的arrayadapter: ArrayAdapter<DefineRoute> adapter = new ArrayAdapter<DefineRoute>( this, android.R.layout.simple_list_item_1,verbindungen.getVerbindungen()); 以下是我

嗨,伙计们

我有个问题。我的应用程序应在列表视图中显示所有路线。但是arrayadapter有点问题。如果我像这样尝试我的arrayadapter:

ArrayAdapter<DefineRoute> adapter = new ArrayAdapter<DefineRoute>(
                this, android.R.layout.simple_list_item_1,verbindungen.getVerbindungen());
以下是我的活动:

public class Verbindungen {
    SQLiteDatabase db;
    LinkedList<DefineRoute> route;
    DefineRoute[] routeArray;
    Context context;

    DatabaseHelper myDbHelper = null;

    public Verbindungen(Context context) {
        route = new LinkedList<DefineRoute>();
        this.context = context;
        myDbHelper = new DatabaseHelper(context);
    }

    public DefineRoute[] getVerbindungen() {

        try {

            myDbHelper.createDataBase();

        } catch (IOException ioe) {

            throw new Error("Unable to create database");
        }
        try {

            myDbHelper.openDataBase();

        }catch(SQLException sqle){

            throw sqle;

        }

        db = myDbHelper.getReadableDatabase();
        // Alle Daten der Datenbank abrufen mithilfe eines Cursors
        Cursor cursor = db.rawQuery("SELECT 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 = 'Linz/Donau Hbf (Busterminal)' " +
                "AND ziel.name = 'Neufelden Busterminal (Schulzentrum)' " +
                "GROUP BY u.fahrt_id",null);

        cursor.moveToFirst();
        int i=0;
        while (cursor.moveToNext()){
            //in this string we get the record for each row from the column "name"
            i++;
        }
        routeArray = new DefineRoute[i];
        cursor.moveToFirst();
        int k =0;
        while (cursor.moveToNext())
        {
            routeArray[k] = new DefineRoute(cursor.getString(0),cursor.getString(1),cursor.getString(2),
                    cursor.getString(3));
            k++;

        }
        //here we close the cursor because we do not longer need it
        //}
        cursor.close();
        myDbHelper.close();

        return routeArray;

    }
public类Verbindungen{
sqlitedb数据库;
链接列表路径;
明确[]路线;
语境;
DatabaseHelper myDbHelper=null;
公共逐字逐句(上下文){
路由=新的LinkedList();
this.context=上下文;
myDbHelper=新数据库助手(上下文);
}
公共定义输出[]getVerbindungen(){
试一试{
myDbHelper.createDataBase();
}捕获(ioe异常ioe){
抛出新错误(“无法创建数据库”);
}
试一试{
myDbHelper.openDataBase();
}捕获(SQLException sqle){
抛出sqle;
}
db=myDbHelper.getReadableDatabase();
//所有的日期都在银行里
Cursor Cursor=db.rawQuery(“选择strftime('%H:%M',f.abfahrt)作为abfahrt,”+
strftime(“%H:%M”,f.ankunft)作为ankunft+
strftime('%H:%M',strftime('%s',f.ankunft)-strftime('%s',f.abfahrt),'unixepoch')作为Dauer+
“r.name作为路由,”+
“将(u.fahrt_id)计数为Umstiege”+
“来自scotty_fahrt f”+
“加入scotty_haltestelle开始于f.start_id=start.id”+
“在f.ziel_id=ziel.id上加入scotty_haltestelle ziel”+
“在f.route_id=r.id上加入scotty_路线r”+
“f.id=u.fahrt\u id上的左外连接scotty_umstiegsstelle u”+
“其中start.name='Linz/Donau Hbf(Busterminal)'”+
“和ziel.name='Neufelden Busterminal(Schulzentrum)'+
“按u.fahrt_id分组”,空);
cursor.moveToFirst();
int i=0;
while(cursor.moveToNext()){
//在这个字符串中,我们从“name”列获取每一行的记录
i++;
}
routeArray=新定义的输出[i];
cursor.moveToFirst();
int k=0;
while(cursor.moveToNext())
{
routeArray[k]=新定义的输出(cursor.getString(0)、cursor.getString(1)、cursor.getString(2),
getString(3));
k++;
}
//这里我们关闭光标,因为我们不再需要它
//}
cursor.close();
myDbHelper.close();
返回路线;
}
请帮帮我

现在,我正在创建一个ArrayAdapter类,在该类中,我使用以下命令在listview中定义输出:

public class RouteAdapter extends ArrayAdapter<DefineRoute>{
    Activity context;
    DefineRoute[] defineroute;

    public RouteAdapter(Activity context, DefineRoute[] defineroute){
        super(context, R.layout.layoutausgabe, defineroute);
        this.defineroute = defineroute;
        this.context = context;
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = context.getLayoutInflater();
        View row = inflater.inflate(R.layout.layoutausgabe,null);
        TextView txZeit = (TextView)row.findViewById(R.id.txZeit);
        TextView txDauer = (TextView)row.findViewById(R.id.txDauer);
        TextView txUmstieg = (TextView)row.findViewById(R.id.txUmstieg);

        DefineRoute defineRoute = defineroute[position];

        txZeit.setText(defineRoute.getAbfahrtszeit() + " - " + defineRoute.getAnkunftszeit());
        txDauer.setText(defineRoute.getDauer());
        txUmstieg.setText(defineRoute.getUmstieg());
        return row;
    }
}

公共类RouteAdapter扩展了ArrayAdapter{
活动语境;
定义输出[]定义输出;
公共路由适配器(活动上下文,DefineRoute[]DefineRoute){
super(上下文,R.layout.layoutusgabe,defineroute);
this.defineroute=defineroute;
this.context=上下文;
}
公共视图getView(int位置、视图转换视图、视图组父视图){
LayoutInflater充气器=上下文。getLayoutInflater();
视图行=充气机。充气(R.layout.layoutusgabe,null);
TextView txZeit=(TextView)row.findViewById(R.id.txZeit);
TextView txDauer=(TextView)row.findviewbyd(R.id.txDauer);
TextView txUmstieg=(TextView)row.findViewById(R.id.txUmstieg);
DefineRoute DefineRoute=DefineRoute[位置];
txZeit.setText(definerout.getAbfahrtszeit()+“-”+definerout.getAnkunftszeit());
txDauer.setText(defineRoute.getDauer());
txUmstieg.setText(defineRoute.getUmstieg());
返回行;
}
}
我该如何继续?
我的适配器应该是什么样子?

你的
数组适配器是
字符串的类型,所以将
字符串
列表传递给它的构造函数,而不是
verbindungen.getVerbindungen()
对象列表。

arrandapter是你可以使用的任何类型的类

在您的例子中,ArrayAdapter需要重写DefineRoute类的字符串方法

就你而言

 @Override
     public String toString() {
     return ankunftszeit+" "+ankunftszeit;
//or what ever you want to displat
     }

或者还有另一种解决方案,即通过BaseAdapter类创建您自己的适配器扩展。

编程时首先使用国际语言,而不是Deutsch,第二,使用基于游标的类例如SimpleCursorAdaptet我实际上为ArrayAdapter创建了一个类浪费时间和内存:当你有游标时,SimpleCursorAdapter是一个明显的选择是的,但我需要在listview中有一个特定的布局而不是标准SCA不使用任何std布局是的,我试过了,我已经创建了一个类routeAdapter我为我的适配器定义了一个布局,但现在请帮助我。在其他类中,一切都与以前相同,但我添加了此活动:公共类RouteDapter扩展了ArrayAdapter{Activity context;DefineRoute[]DefineRoute;公共RouteDapter(Activity context,DefineRoute[]DefineRoute){super(context,R.layout.LayoutusGabe,DefineRoute);this.defineroute=defineroute;this.context=context;}public View getView(int position,View convertView,ViewGroup parent){您面临什么问题..?数组适配器有问题。因为他是Arrayadapter,这不起作用,但我需要它,因为我想显示字符串元素你能帮帮我吗我不知道你的意思
public class Verbindungen {
    SQLiteDatabase db;
    LinkedList<DefineRoute> route;
    DefineRoute[] routeArray;
    Context context;

    DatabaseHelper myDbHelper = null;

    public Verbindungen(Context context) {
        route = new LinkedList<DefineRoute>();
        this.context = context;
        myDbHelper = new DatabaseHelper(context);
    }

    public DefineRoute[] getVerbindungen() {

        try {

            myDbHelper.createDataBase();

        } catch (IOException ioe) {

            throw new Error("Unable to create database");
        }
        try {

            myDbHelper.openDataBase();

        }catch(SQLException sqle){

            throw sqle;

        }

        db = myDbHelper.getReadableDatabase();
        // Alle Daten der Datenbank abrufen mithilfe eines Cursors
        Cursor cursor = db.rawQuery("SELECT 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 = 'Linz/Donau Hbf (Busterminal)' " +
                "AND ziel.name = 'Neufelden Busterminal (Schulzentrum)' " +
                "GROUP BY u.fahrt_id",null);

        cursor.moveToFirst();
        int i=0;
        while (cursor.moveToNext()){
            //in this string we get the record for each row from the column "name"
            i++;
        }
        routeArray = new DefineRoute[i];
        cursor.moveToFirst();
        int k =0;
        while (cursor.moveToNext())
        {
            routeArray[k] = new DefineRoute(cursor.getString(0),cursor.getString(1),cursor.getString(2),
                    cursor.getString(3));
            k++;

        }
        //here we close the cursor because we do not longer need it
        //}
        cursor.close();
        myDbHelper.close();

        return routeArray;

    }
public class RouteAdapter extends ArrayAdapter<DefineRoute>{
    Activity context;
    DefineRoute[] defineroute;

    public RouteAdapter(Activity context, DefineRoute[] defineroute){
        super(context, R.layout.layoutausgabe, defineroute);
        this.defineroute = defineroute;
        this.context = context;
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = context.getLayoutInflater();
        View row = inflater.inflate(R.layout.layoutausgabe,null);
        TextView txZeit = (TextView)row.findViewById(R.id.txZeit);
        TextView txDauer = (TextView)row.findViewById(R.id.txDauer);
        TextView txUmstieg = (TextView)row.findViewById(R.id.txUmstieg);

        DefineRoute defineRoute = defineroute[position];

        txZeit.setText(defineRoute.getAbfahrtszeit() + " - " + defineRoute.getAnkunftszeit());
        txDauer.setText(defineRoute.getDauer());
        txUmstieg.setText(defineRoute.getUmstieg());
        return row;
    }
}
 @Override
     public String toString() {
     return ankunftszeit+" "+ankunftszeit;
//or what ever you want to displat
     }