2013-06-16 6 views
1

데이터베이스에서 데이터를받는 데 문제가 있습니다. 내 코드에서 결정한대로 내 데이터베이스 (TBL_MAHRIE)에는 (ID, COL_SAL, COL_NERKH)의 열이 포함되어 있습니다. 프로젝트를 실행하면서 회 전자 및 ListView에서 반복되는 데이터를 받았습니다.내 회 전자 및 ListView에 반복되는 데이터

  1. Mahrie.java (MY 스피너 LOAD 여기)

    package ir.dadpardaz.mahrie_dadpardaz; 
    import java.util.ArrayList; 
    import java.util.List; 
    
    import android.os.Bundle; 
    import android.app.Activity; 
    import android.content.Context; 
    import android.view.Menu; 
    import android.view.View; 
    import android.view.View.OnClickListener; 
    import android.widget.ArrayAdapter; 
    import android.widget.Button; 
    import android.widget.EditText; 
    import android.widget.Spinner; 
    import android.widget.TextView; 
    
    public class Mahrie extends Activity { 
    
    private Spinner spinner_sal1, spinner_sal2; 
    private Button btn_calc; 
    EditText ed_shakhes_Nekah, ed_shakhes_Motalebe; 
    TextView tv_res; 
    float shakhes_Nekah, shakes_Motalebe, final_Res; 
    
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_mahrie); 
    
        ed_shakhes_Motalebe = (EditText) findViewById(R.id.ed_shakhes_Motalebe); 
        ed_shakhes_Nekah = (EditText) findViewById(R.id.ed_shakes_Nekah); 
        tv_res = (TextView) findViewById(R.id.tv_res); 
    
        // DATABASE 
        DataBaseHandler databaseAdapter = new DataBaseHandler(this); 
    
        Shakhes shakhes1 = new Shakhes("1392", "250"); 
        databaseAdapter.insertShakhes(shakhes1); 
    
        Shakhes shakhes2 = new Shakhes("1391", "200"); 
        databaseAdapter.insertShakhes(shakhes2); 
    
        Shakhes shakhes3 = new Shakhes("1390", "150"); 
        databaseAdapter.insertShakhes(shakhes3); 
    
        Shakhes shakhes4 = new Shakhes("1389", "100"); 
        databaseAdapter.insertShakhes(shakhes4); 
    
        Shakhes shakhes5 = new Shakhes("1388", "50"); 
        databaseAdapter.insertShakhes(shakhes5); 
    
        Shakhes shakhes6 = new Shakhes("1387", "25"); 
        databaseAdapter.insertShakhes(shakhes6); 
    
        addItemsOnSpinner2(); 
        addListenerOnButton(); 
        addListenerOnSpinnerItemSelection(); 
        } 
    
    // add items into spinner dynamically 
    public void addItemsOnSpinner2() { 
    
        spinner_sal2 = (Spinner) findViewById(R.id.spinner_Sal2); 
        List<String> list = new ArrayList<String>(); 
    
        DataBaseHandler databaseAdapter = new DataBaseHandler(this); 
        List<Shakhes> data_shakhes = null; 
        data_shakhes = databaseAdapter.getAllShakhes(); 
    
        Context context = getApplicationContext(); 
    
        for (int i = 0; i < data_shakhes.size(); i++) { 
    
         list.add((data_shakhes.get(i).getSal())); 
    
        } 
    
        ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, 
          android.R.layout.simple_spinner_item, list); 
        dataAdapter 
          .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
        spinner_sal2.setAdapter(dataAdapter); 
    } 
    
    public void addListenerOnSpinnerItemSelection() { 
        spinner_sal1 = (Spinner) findViewById(R.id.spinner_Sal1); 
        spinner_sal1 
          .setOnItemSelectedListener(new CustomOnItemSelectedListener()); 
    } 
    
    // get the selected dropdown list value 
    public void addListenerOnButton() { 
    
        spinner_sal1 = (Spinner) this.findViewById(R.id.spinner_Sal1); 
        spinner_sal2 = (Spinner) findViewById(R.id.spinner_Sal2); 
        btn_calc = (Button) findViewById(R.id.btn_calc); 
    
        btn_calc.setOnClickListener(new OnClickListener() { 
    
         public void onClick(View v) { 
    
          shakhes_Nekah = Float.parseFloat(ed_shakhes_Nekah.getText() 
            .toString()); 
          shakes_Motalebe = Float.parseFloat(ed_shakhes_Motalebe 
            .getText().toString()); 
          final_Res = shakes_Motalebe/shakhes_Nekah; 
    
          tv_res.setText(final_Res + "");    
    
         } 
    
        }); 
    } 
    } 
    

2.DataBase Handler.java

package ir.dadpardaz.mahrie_dadpardaz; 

import java.util.ArrayList; 
import java.util.List; 

import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteDatabase.CursorFactory; 
import android.database.sqlite.SQLiteOpenHelper; 
import android.widget.ToggleButton; 

public class DataBaseHandler { 

    SQLiteDatabase database; 

    public DataBaseHandler(Context context) { 
     ShakhesDatabaseOpenHelper shakhesDatabaseOpenHelper = new ShakhesDatabaseOpenHelper(
       context, "shakhsdb.db", null, 1); 
     database = shakhesDatabaseOpenHelper.getWritableDatabase(); 
    } 

    public class ShakhesDatabaseOpenHelper extends SQLiteOpenHelper { 

     public ShakhesDatabaseOpenHelper(Context context, String name, 
       CursorFactory factory, int version) { 
      super(context, name, factory, version); 
     } 

     @Override 
     public void onCreate(SQLiteDatabase db) { 
      //db.execSQL("DROP TABLE IF EXISTS "+ "TBL_MAHRIE"); 
      String query = "create table IF NOT EXISTS TBL_MAHRIE (ID INTEGER PRIMARY KEY, COL_SAL TEXT, COL_NERKH TEXT)"; 
      db.execSQL(query); 
     } 

     @Override 
     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
      db.execSQL("DROP TABLE IF EXISTS "+ "TBL_MAHRIE"); 
     } 

    } 

    public long insertShakhes(Shakhes shakhes) { 
     ContentValues values = new ContentValues(); 
     values.put("COL_SAL", shakhes.getSal()); 
     values.put("COL_NERKH", shakhes.getNerkh()); 
     return database.insert("TBL_MAHRIE", null, values); 
    } 

    boolean isTableExists(SQLiteDatabase db, String tableName) { 
     if (tableName == null || db == null || !db.isOpen()) { 
      return false; 
     } 
     Cursor cursor = db 
       .rawQuery(
         "SELECT COUNT(*) FROM sqlite_master WHERE type = ? AND name = ?", 
         new String[] { "table", tableName }); 
     if (!cursor.moveToFirst()) { 
      return false; 
     } 
     int count = cursor.getInt(0); 
     cursor.close(); 
     return count > 0; 
    } 


    public List<Shakhes> getAllShakhes() { 
     List<Shakhes> shakhess = null; 

     Cursor c = database.rawQuery("SELECT * FROM TBL_MAHRIE",null); 
     //Cursor c = database.query("TBL_MAHRIE", new String[] { "ID", "COL_SAL", "COL_NERKH" }, null, null, null, null, null); 
     shakhess = new ArrayList<Shakhes>(); 
     Shakhes p = new Shakhes(); 
     if (c.moveToFirst()) {   
      do { 
       p.setId((int) c.getLong(c.getColumnIndex("ID"))); 
       p.setSal(c.getString(c.getColumnIndex("COL_SAL"))); 
       p.setNerkh(c.getString(c.getColumnIndex("COL_NERKH"))); 

       shakhess.add(p); 
      } while (c.moveToNext()); 
      return shakhess; 

    } 
     return shakhess; 
     } 

    } 
  1. Mahrie_JadvalActivity (내 ListView에 여기 팽창)

    package ir.dadpardaz.mahrie_dadpardaz; 
    
    import java.util.ArrayList; 
    import java.util.List; 
    import android.app.Activity; 
    import android.content.Context; 
    import android.os.Bundle; 
    import android.view.LayoutInflater; 
    import android.view.View; 
    import android.view.ViewGroup; 
    import android.widget.ArrayAdapter; 
    import android.widget.Button; 
    import android.widget.ListView; 
    import android.widget.TextView; 
    import android.widget.Toast; 
    
    public class Mahrie_JadvalActivity extends Activity { 
    
    ListView personListView; 
    
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_mahrie__jadval); 
    
        personListView = (ListView) findViewById(R.id.personListView); 
        DataBaseHandler databaseAdapter = new DataBaseHandler(this);   
    
    
        Shakhes shakhes1 = new Shakhes("2392" , "250"); 
        databaseAdapter.insertShakhes(shakhes1); 
    
        Shakhes shakhes2 = new Shakhes("2391" , "200"); 
        databaseAdapter.insertShakhes(shakhes2); 
    
        Shakhes shakhes3 = new Shakhes("2390" , "150"); 
        databaseAdapter.insertShakhes(shakhes3); 
    
        Shakhes shakhes4 = new Shakhes("2389" , "100"); 
        databaseAdapter.insertShakhes(shakhes4); 
    
        Shakhes shakhes5 = new Shakhes("2388" , "50"); 
        databaseAdapter.insertShakhes(shakhes5); 
    
        Shakhes shakhes6 = new Shakhes("2387" , "25"); 
        databaseAdapter.insertShakhes(shakhes6);     
    
    
    
        List<Shakhes> shakhes = 
        databaseAdapter.getAllShakhes() ; 
        ShakhesListViewAdapter shakhesListViewAdapter = new ShakhesListViewAdapter(this, R.layout.mahrie_list_view_item, shakhes); 
        personListView.setAdapter(shakhesListViewAdapter);  
    } 
    
    public class ShakhesListViewAdapter extends ArrayAdapter<Shakhes> { 
    
        List<Shakhes> data; 
        Context context; 
    
        public ShakhesListViewAdapter(Context context, int resourceId, List<Shakhes> data) { 
         super(context, resourceId, data); 
         this.data = data; 
         this.context = context; 
        } 
    
        @Override 
        public View getView(final int position, View item, ViewGroup parent) { 
         LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
         item = inflater.inflate(R.layout.mahrie_list_view_item, parent , false); 
    
         TextView familyTextView = (TextView) item.findViewById(R.id.familyTextView); 
         familyTextView.setText(data.get(position).getSal()) ; 
         //familyTextView.setTypeface(bYekan); 
    
         TextView nameTextView = (TextView) item.findViewById(R.id.nameTextView); 
         nameTextView.setText(data.get(position).getNerkh()) ; 
         //nameTextView.setTypeface(bYekan); 
    
         Button detailsButton = (Button) item.findViewById(R.id.detailsButton); 
         detailsButton.setOnClickListener(new View.OnClickListener() { 
    
          @Override 
          public void onClick(View v) { 
           //Toast.makeText(context, 
            // data.get(position).getSal() + " " + data.get(position).getNerkh(), 
            // Toast.LENGTH_LONG).show(); 
    
           Toast.makeText(context, 
             data.size()+"" + " and ID is " + position + "" , 
             Toast.LENGTH_LONG).show(); 
    
          } 
         }); 
    
         //item.startAnimation(animation); 
    
         return item; 
        }  
    
    
        } } 
    

4.Shakhes.java

당신의 DataBaseHandler.java 내부
package ir.dadpardaz.mahrie_dadpardaz; 

public class Shakhes { 

    public int id ; 
    public static String sal ; 
    public static String nerkh ; 



    public Shakhes(int id, String sal, String nerkh) { 
     super(); 
     this.id = id; 
     this.sal = sal; 
     this.nerkh = nerkh; 
    } 

    public Shakhes(String sal, String nerkh) { 
     super(); 
     this.sal = sal; 
     this.nerkh = nerkh; 
    } 

    public Shakhes() { 

    } 

    public int getId() { 
     return this.id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    public String getSal() { 
     return sal; 
    } 

    public void setSal(String sal) { 
     this.sal = sal; 
    } 

    public String getNerkh() { 
     return nerkh; 
    } 

    public void setNerkh(String nerkh) { 
     this.nerkh = nerkh; 
    } 






} 

답변

0

는, 다음과 같이 변경

public List<Shakhes> getAllShakhes() { 
    List<Shakhes> shakhess = null; 

    Cursor c = database.rawQuery("SELECT * FROM TBL_MAHRIE",null); 
    //Cursor c = database.query("TBL_MAHRIE", new String[] { "ID", "COL_SAL", "COL_NERKH" }, null, null, null, null, null); 
    shakhess = new ArrayList<Shakhes>(); 

    if (c.moveToFirst()) {   
     do { 
Shakhes p = new Shakhes(); 
      p.setId((int) c.getLong(c.getColumnIndex("ID"))); 
      p.setSal(c.getString(c.getColumnIndex("COL_SAL"))); 
      p.setNerkh(c.getString(c.getColumnIndex("COL_NERKH"))); 

      shakhess.add(p); 
     } while (c.moveToNext()); 
     return shakhess; 

} 
    return shakhess; 
    } 

}

코드 Shakhes p = new Shakhes(); 내부 선 수행을-동안 확인 고리. 그렇지 않으면 오래된 것을 덮어 씁니다. 그리고 같은 것이 arraylist에 추가됩니다.

+0

Nizam에게 감사의 말을 전합니다.하지만 안타까운 일은 아닙니다. 귀하의 코드를 교체했지만, 내 활동이 모든 레코드 (6 번) 대신 마지막 레코드를 반복합니다. 캐시를 지우고 응용 프로그램을 제거했지만 특별한 일은 없었습니다. – user2488251

+0

DB를 확인 했습니까? 표 안에 삽입 된 값이 맞습니까? DDMS 파일 관리자에서 DB를 밀어 확인하십시오. – Nizam

+0

예, SQLite 데이터 브라우저 플러그인으로 데이터를 확인했습니다. 데이터가 올바르게 삽입되었습니다. – user2488251