Радио кнопка не работает, когда его прокрутка - PullRequest
0 голосов
/ 18 июня 2019

У меня 57 переключателей в виде списка, я хочу разделить эти переключатели на 19 групп, поэтому у каждой группы есть 3 переключателя. но когда я прокрутил его, вид испортился, и автоматическое добавление переключателя стало двойным. данные получены из базы данных sqlite.

KlasifikasiActivity

public class KlasifikasiActivity extends AppCompatActivity {
    private ListView lvKlasifikasi;
    private ListKlasifikasiAdapter adapter;
    private List<Klasifikasi> mKlasifikasiList;
    private DatabaseHelper mDBHelper;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_klasifikasi);
        lvKlasifikasi = (ListView)findViewById(R.id.stepSwitcher);
        mDBHelper = new DatabaseHelper(this);

        File database = getApplicationContext().getDatabasePath(DatabaseHelper.DBNAME);
        if (false == database.exists()){
            mDBHelper.getReadableDatabase();
            if (copyDatabase(this)){
                Toast.makeText(this,"COPY SUCCESS",Toast.LENGTH_SHORT).show();
            }else {
                Toast.makeText(this,"COPY ERROR",Toast.LENGTH_SHORT).show();
                return;
            }
        }
        //get db metode
        mKlasifikasiList = mDBHelper.getListKlasifikasiByGroup();
        adapter = new ListKlasifikasiAdapter(this,mKlasifikasiList);
        lvKlasifikasi.setAdapter(adapter);
    }

    private boolean copyDatabase(Context context) {
        try {
            InputStream inputStream = context.getAssets().open(DatabaseHelper.DBNAME);
            String outFileName = DatabaseHelper.DBLOCATION + DatabaseHelper.DBNAME;
            OutputStream outputStream = new FileOutputStream(outFileName);
            byte[] buff = new byte[1024];
            int length = 0;
            while ((length = inputStream.read(buff)) > 0){
                outputStream.write(buff,0,length);
            }
            outputStream.flush();
            outputStream.close();
            Log.w("MainActivity","DB copied");
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }
}

DatabaseHelper и метод функции

public class DatabaseHelper extends SQLiteOpenHelper {
    public static final String DBNAME = "database.db";
    public static final String DBLOCATION = "/data/data/com.example.damar.finalproject/databases/";
    private Context mContext;
    private SQLiteDatabase mDatabase;

    public DatabaseHelper(Context context){
        super(context,DBNAME,null,1);
        this.mContext = context;
    }
    @Override
    public void onCreate(SQLiteDatabase db){

    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){

    }

    public void openDatabase(){
        String dbPath = mContext.getDatabasePath(DBNAME).getPath();
        if (mDatabase != null && mDatabase.isOpen()){
            return;
        }
        mDatabase = SQLiteDatabase.openDatabase(dbPath, null,SQLiteDatabase.OPEN_READWRITE);
    }
    public void closeDatabase(){
        if (mDatabase!=null){
            mDatabase.close();
        }
    }
public List<Klasifikasi> getListKlasifikasiByGroup(){
        Klasifikasi klasifikasi = null;
        List<Klasifikasi> klasifikasiList = new ArrayList<>();
        openDatabase();
        Cursor cursor = mDatabase.rawQuery("SELECT * FROM klasifikasi group by group_index", null);
        cursor.moveToFirst();
        while (!cursor.isAfterLast()){
            klasifikasi = new Klasifikasi(cursor.getInt(0),cursor.getString(1),cursor.getString(2),cursor.getString(3),cursor.getInt(4));
            klasifikasiList.add(klasifikasi);
            cursor.moveToNext();
        }
        cursor.close();
        closeDatabase();
        return klasifikasiList;
    }
}

1 Ответ

0 голосов
/ 18 июня 2019

проверили ли вы список сразу после извлечения из базы данных и до того, как настроили адаптер

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...