2016-11-13 84 views
0

我有一個sqlite數據庫,我想通過數據庫查詢和填充列表視圖與返回,但列表視圖顯示只有一行很多返回多行,也沒有錯誤。 Item是一個包含setter和getter的類。android sqlite查詢無法返回?

我用這個方法用於查詢:

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; 
    } 

} 
+0

我不知道'Item'是什麼,但是你用'item = new Item()'設置每個遊標查詢一個新遊標。而且我無法看到你在哪裏添加這個新項目,所以我想它總是被覆蓋,結果只是一個項目。 – Opiatefuchs

+0

DBQuery只是返回一個項目。我不能看到一種方法,你正在循環並在每個循環中添加一個新項目。 – Opiatefuchs

+0

項目是一個包含getters和setter的類,是否有問題? –

回答

0

我添加這增加了產品的數組列表每當我們經歷循環時都會發生。

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; 
    } 

}