android sqlite查询没有回复?

时间:2016-11-13 09:37:46

标签: android sql sqlite android-sqlite

我有一个sqlite数据库,我想通过db查询并使用return填充listview,但listview只显示一行多次返回多行并且也没有错误。 Item是一个包含setter和getter的类。

我将此方法用于查询:

fillList2(edtSeach.getQuery().toString().toLowerCase(),"zankodict", "id","eng",Long.valueOf(1),Long.valueOf(1794));

这是这个方法:

 private void fillList2(String keyword,String table, String columnn,String column2,Long num1,Long num2) {
        if (keyword.equals(BuildConfig.FLAVOR)) {
            this.myList = new ArrayList();
        } else if (keyword.toCharArray().length < 2) {
            myList.clear();
            myList.add(DBQuery.a(keyword,table,columnn,column2,num1,num2));

        } else {
            myList.clear();
            myList.add(DBQuery.a(keyword,table,columnn,column2,num1,num2));
        }
                myListView.setAdapter(new AdapterEN(getActivity(), R.layout.single_row, myList,keyword));
        }
    }

DBQUery.class

import android.database.Cursor;


public class DBQuery {
    private static Item itemm, itemm2;
    private static Cursor cursor10;
    public static Item a(String keyword,String table, String columnn,String column2, Long num1,Long num2) {
        C0101f.getDatabaseHelper().openDatabase();
         cursor10 =  C0101f.getDatabaseHelper().QueryData("select * from "+ table +" WHERE "+ columnn +" between "+num1+" and "+num2+ " And " +column2+ " LIKE '"+ keyword + "%'");
        itemm2 = cur(table);
        C0101f.getDatabaseHelper().closeDataBase();
        return itemm2;
    }
    public static Item cur(String table){
        switch (table) {
            case "zankodict":
                if (cursor10 != null) {
                    if (cursor10.moveToFirst()) {
                        do {
                            itemm = new Item();
                            itemm.setId(cursor10.getString(0));
                            itemm.setEng(cursor10.getString(1));
                        } while (cursor10.moveToNext());
                    }
                }
                break;
            case "kudict":
                if (cursor10 != null) {
                    if (cursor10.moveToFirst()) {
                        do {
                            itemm = new Item();
                            itemm.setId(cursor10.getString(0));
                            itemm.setKurd(cursor10.getString(1));
                            itemm.setId2(cursor10.getLong(2));
                        } while (cursor10.moveToNext());
                    }
                }
                break;
            case "ardict":
                if (cursor10 != null) {
                    if (cursor10.moveToFirst()) {
                        do {
                            itemm = new Item();
                            itemm.setId(cursor10.getString(0));
                            itemm.setAr(cursor10.getString(1));
                            itemm.setId2(cursor10.getLong(2));
                        } while (cursor10.moveToNext());
                    }
                }
                break;
        }
        return itemm;
    }

}

1 个答案:

答案 0 :(得分:0)

我添加了一个数组列表,每次循环时都会向其添加Items。

import android.database.Cursor;

import java.util.ArrayList;

/**
 * Created by RRR on 11/12/2016.
 */

public class DBQuery {
    public static ArrayList<Item> myList = new ArrayList<Item>();
    public static ArrayList<Item> myList2 = new ArrayList<Item>();
    private static Item itemm;
    private static Cursor cursor10;
    public static ArrayList<Item> a(String keyword,String table, String columnn,String column2, Long num1,Long num2) {
        C0101f.getDatabaseHelper().openDatabase();
         cursor10 =  C0101f.getDatabaseHelper().QueryData("select * from "+ table +" WHERE "+ columnn +" between "+num1+" and "+num2+ " And " +column2+ " LIKE '"+ keyword + "%'");
        myList2 = cur(table);
        C0101f.getDatabaseHelper().closeDataBase();
        return myList2;
    }
    public static ArrayList<Item> cur(String table){
        switch (table) {
            case "zankodict":
                if (cursor10 != null) {
                    if (cursor10.moveToFirst()) {
                        do {
                            itemm = new Item();
                            itemm.setId(cursor10.getString(0));
                            itemm.setEng(cursor10.getString(1));
                            myList.add(itemm);
                        } while (cursor10.moveToNext());
                    }
                }
                break;
            case "kudict":
                if (cursor10 != null) {
                    if (cursor10.moveToFirst()) {
                        do {
                            itemm = new Item();
                            itemm.setId(cursor10.getString(0));
                            itemm.setKurd(cursor10.getString(1));
                            itemm.setId2(cursor10.getLong(2));
                            myList.add(itemm);
                        } while (cursor10.moveToNext());
                    }
                }
                break;
            case "ardict":
                if (cursor10 != null) {
                    if (cursor10.moveToFirst()) {
                        do {
                            itemm = new Item();
                            itemm.setId(cursor10.getString(0));
                            itemm.setAr(cursor10.getString(1));
                            itemm.setId2(cursor10.getLong(2));
                            myList.add(itemm);
                        } while (cursor10.moveToNext());
                    }
                }
                break;
        }
        return myList;
    }

}