Java “我的微调器”和“列表视图”中的重复数据

Java “我的微调器”和“列表视图”中的重复数据,java,android,sqlite,Java,Android,Sqlite,我从数据库接收数据时遇到问题。正如我的代码所确定的,我的数据库(TBL_MAHRIE)包含三列(ID、COL_SAL、COL_NERKH)。在运行我的项目时,我在spinner和ListView中都收到了重复的数据 java(我的微调器加载在这里) 在DataBaseHandler.java中,进行以下更改 public List<Shakhes> getAllShakhes() { List<Shakhes> shakhess = null; Cur

我从数据库接收数据时遇到问题。正如我的代码所确定的,我的数据库(TBL_MAHRIE)包含三列(ID、COL_SAL、COL_NERKH)。在运行我的项目时,我在spinner和ListView中都收到了重复的数据

  • java(我的微调器加载在这里)


    在DataBaseHandler.java中,进行以下更改

     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;
       }
    
    public List getAllShakhes(){
    列表shakhess=null;
    游标c=database.rawQuery(“SELECT*fromtbl_MAHRIE”,null);
    //游标c=database.query(“TBL_MAHRIE”,新字符串[]{“ID”,“COL_SAL”,“COL_NERKH”},null,null,null,null);
    shakhess=newarraylist();
    如果(c.moveToFirst()){
    做{
    Shakhes p=新Shakhes();
    p、 setId((int)c.getLong(c.getColumnIndex(“ID”));
    p、 setSal(c.getString(c.getColumnIndex(“colu-SAL”));
    p、 setNerkh(c.getString(c.getColumnIndex(“COL_NERKH”)));
    加上(p);
    }而(c.moveToNext());
    返回shakhess;
    } 
    返回shakhess;
    }
    
    }


    对行进行编码
    Shakhes p=new Shakhes()内部执行while循环。否则,它将覆盖旧的,并将在arraylist中添加相同的内容。

    多亏了Nizam,但不幸的是没有起作用。虽然我替换了您的代码,但我的活动重复了最后一条记录而不是所有记录(6次)。我清除了缓存并卸载了应用程序,但没有发生任何特殊情况。您是否检查了数据库?表中插入的值是否正确?从DDMS文件管理器推送数据库并检查。是的,我已经使用SQLite数据浏览器插件检查了数据。数据插入正确。OOOOOOH,解决了,这只是因为我的变量在Shakhes.java中定义为静态。thx到尼扎姆。
    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;
            }
    
        }
    
    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;
        }       
    
    
         } }
    
    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;
        }
    
    
    
    
    
    
    }
    
     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;
       }