0

データベースからすべてのレコードを取得し、すべてのレコードを配列リストに保存しています。配列リストのレコードを表示すると、繰り返されるデータが表示されますが、問題は何ですか?

view_recordクラスでこの関数を呼び出す:

public ArrayList<tuple> getdata() {         // TODO Auto-generated method stub

        tuple obj=new tuple();
        Cursor c = ourDatabase.query(DATABASE_TABLE, PROJECTION_ALL, null, null, null, null, null);

        if(c == null) {
         return null;
        }

        ArrayList <tuple> data = new ArrayList<tuple>();

        // String result = " ";

        int i=0;

        for(c.moveToFirst();!c.isAfterLast();c.moveToNext()){
                  obj.ROWID= c.getString(c.getColumnIndexOrThrow(KEY_ROWID));
                  obj.CNAME= c.getString(c.getColumnIndexOrThrow(KEY_CNAME));
                  obj.SNAME= c.getString(c.getColumnIndexOrThrow(KEY_SNAME));
                  obj.FAMILY= c.getString(c.getColumnIndexOrThrow(KEY_FAMILY));
                  obj.LOCATION= c.getString(c.getColumnIndexOrThrow(KEY_LOCATION));
                  obj.IMAGE1= c.getBlob(c.getColumnIndexOrThrow(KEY_IMAGE1));
                  obj.IMAGE2= c.getBlob(c.getColumnIndexOrThrow(KEY_IMAGE2));
                  obj.IMAGE3= c.getBlob(c.getColumnIndexOrThrow(KEY_IMAGE3));
                  data.add(i, obj);
                  i++;
       }
       c.close();

       return data;     }

私のview_recordクラス

public class view_record extends Activity {

    @Override protected void onCreate(Bundle savedInstanceState) {      // TODO Auto-generated method stub      

        super.onCreate(savedInstanceState);
        setContentView(R.layout.db_view);

        TextView tv=(TextView) findViewById(R.id.tvSqlinfo);
        ImageView img=(ImageView) findViewById(R.id.img_view);      

        db_handler info=new db_handler(this);
        info.open();    

        //   Log.d("abc", "adb");

        ArrayList <tuple> data=info.getdata();
        Log.d("abc", "adb");

        String result="";

        for(int i=0;i<data.size();i++){
               result +=" " + data.get(i).ROWID + "   " + data.get(i).CNAME + "   " + data.get(i).SNAME + "   " + data.get(i).FAMILY + "    " + data.get(i).LOCATION + "\n";

              tv.setText(result);
              img.setImageBitmap(Utilities.getImage(data.get(0).IMAGE2));
        }
        info.close();   } }

私は次のように見たいです:

   " 1 cname sname family location "
   " 2 cname sname family location "

しかし、「2cnamesnameファミリの場所」「2cnamesnameファミリの場所」を取得しています

最後のレコードが2回表示されたことを意味します。

そしてもう1つ、cname = somethingであるすべてのレコードを取得したいのですが、そうしている間にエラーが発生します

4

1 に答える 1

0

forループで新しいプロジェクトを作成していません。それがあなたが同じ結果を得ている理由です。ただやって...

開始時にfor loopこの行を追加obj=new tuple();

2 番目の質問への回答

for(int i=0;i<data.size();i++){
               result +=" " + data.get(i).ROWID + "   " + data.get(i).CNAME + "   " + data.get(i).SNAME + "   " + data.get(i).FAMILY + "    " + data.get(i).LOCATION + "\n";


              img.setImageBitmap(Utilities.getImage(data.get(0).IMAGE2));
        }
   tv.setText(Html.fromHtml(result));
于 2012-12-09T15:12:05.843 に答える