2017-06-22 30 views
-1

私は、テーブルからすべての情報をdatabasehelperクラス内で読み取るCursorを作成し、各要素を対応するフィールドに割り当てるカスタムリストビューを割り当てました。しかし、Cursorは最後の要素だけを印刷しますが、3回の反復のみで収縮します。カーソルはすべてのデータベーステーブルを反復しません

public Cursor getPrograss(){ 
SQLiteDatabase db = this.getReadableDatabase(); 
StatsitcsHelper object = new StatsitcsHelper(); 

Cursor cursor = db.rawQuery ("select * from " + TABLE_PROGGRES, null); 

cursor.moveToFirst(); 
if (cursor!= null && cursor.getCount() > 0 && !cursor.isAfterLast()){ 

    cursor.moveToNext(); 
} 
return cursor; 

} そして、ここでそれを呼び出す断​​片の機能である:ここで

データベースヘルパークラスがある。ここ

public void ShowStatstics() { 

    DatabaseHelper db = new DatabaseHelper (getActivity()); 
    Cursor cursor = db.getPrograss(); 


    String DataA = cursor.getString(cursor.getColumnIndex(COL_P_Date)); 
    String WeightA = cursor.getString(cursor.getColumnIndex(COL_P_Weight)); 
    String PercentA = cursor.getString(cursor.getColumnIndex(COL_P_Percentage)); 



    String[] Prograss = {DataA,WeightA,PercentA}; 

    ListAdapter listAdapter = new StatisticsAdapter (getActivity(),Prograss); 
    lest.setAdapter (listAdapter); 
} 

はアダプタです:

class StatisticsAdapter extends ArrayAdapter<String>{ 
public StatisticsAdapter(@NonNull Context context, String[] resource) { 
    super (context, R.layout.listview_layout ,resource); 
} 

@NonNull 
@Override 
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { 
    LayoutInflater ListInflate = LayoutInflater.from(getContext()); 

    StatsitcsHelper statsitcsHelper = new StatsitcsHelper(); 
    View customView = ListInflate.inflate (R.layout.listview_layout,parent,false); 

    String first = getItem (0); 
    TextView date = (TextView) customView.findViewById (R.id.List_Date); 

    String Second = getItem (1); 
    TextView Weight = (TextView) customView.findViewById (R.id.List_Weight); 

    String Thierd = getItem (2); 
    TextView Percent = (TextView) customView.findViewById (R.id.List_Percentage); 

    date.setText (first); 
    Weight.setText (Second); 
    Percent.setText (Thierd); 

    return customView; 

} 
} 
+0

行や列のリストを取得したいですか? –

+0

私は3つの変数 "日付"、 "重量"、 "パーセンテージ"各行を持っています。私はそれらを私が作ったカスタムlistViewの中に入れたい。 3つの列があります。 –

答えて

0

することができますこのようなPOJOクラスを作成します。

その後、あなたの方法であなたはArrayListのを返すことができ、以下のようなリストに表示
public class Data { 
    String date; 
    String weight; 
    String percentage; 
} 

public ArrayList<Data> getPrograss() { 
    SQLiteDatabase db = this.getReadableDatabase(); 
    StatsitcsHelper object = new StatsitcsHelper(); 

    Cursor cursor = db.rawQuery ("select * from " + TABLE_PROGGRES, null); 

    ArrayList<Data> datas = new ArrayList<>(); 

    if(cursor != null) { 
     cursor.moveToFirst(); 

     for (int i = 0; i < cursor.getCount(); i++) { 

      cursor.moveToPosition(i); 

      Data data = new Data(); 
      data.date = cursor.getString(cursor.getColumnIndex(COL_P_Date)); 
      data.weight = cursor.getString(cursor.getColumnIndex(COL_P_Weight)); 
      data.percentage = cursor.getString(cursor.getColumnIndex(COL_P_Percentage)); 

      datas.add(data); 
     } 

     cursor.close(); 
    } 

    return datas; 
} 
このような

あなたアダプタクラスを見て、

class StatisticsAdapter extends ArrayAdapter<Data> { 
    public StatisticsAdapter(@NonNull Context context, ArrayList<Data> resource) { 
     super (context, R.layout.listview_layout ,resource); 
    } 

    @NonNull 
    @Override 
    public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { 
     LayoutInflater ListInflate = LayoutInflater.from(getContext()); 

     Data data = getItem(position); 

     View customView = ListInflate.inflate (R.layout.listview_layout,parent,false); 

     String first = data.date; 
     TextView date = (TextView) customView.findViewById (R.id.List_Date); 

     String Second = data.weight; 
     TextView Weight = (TextView) customView.findViewById (R.id.List_Weight); 

     String Thierd = data.percentage; 
     TextView Percent = (TextView) customView.findViewById (R.id.List_Percentage); 

     date.setText (first); 
     Weight.setText (Second); 
     Percent.setText (Thierd); 

     return customView; 

    } 
} 

あなたからのアダプタを作成することができますこのようなメソッド

public void showStatstics() { 
    DatabaseHelper db = new DatabaseHelper (getActivity()); 
    ArrayList<Data> datas = db.getPrograss(); 

    ListAdapter listAdapter = new StatisticsAdapter (getActivity(),datas); 
    lest.setAdapter (listAdapter); 
} 
+0

Awsome Muthukrishnan Rajendran、そしてShowStatstics()の中でどのように呼び出すのでしょうか。 –

+0

問題のShowStatsticsアダプタを追加してください。 –

+0

更新Muthukrishnan Rajendran –

関連する問題