Эй, я новичок в разработке приложений android, и в этой ситуации я создаю мобильное приложение, которое хранит данные в базе данных SQLite и отображает их в виде списка, а элементы в списке можно проверить с помощью флажков. .
Здесь я хочу получить положение отмеченных элементов, чтобы я мог передать их в базу данных, и при повторном открытии приложения ранее проверенные элементы будут уже проверены. Я хочу сохранить позицию при нажатии кнопки.
Я использовал SparseBooleanArray для хранения отмеченных элементов, но я понятия не имею, чтобы передать значения SparseBooleanArray в БД, и я застрял там. Помогите мне с этим, и спасибо заранее.
*
public class Subscribe extends AppCompatActivity {
ListView lanList;
DatabaseHelper translateDB;
TextView textView;
Button button;
ArrayList<String> list = new ArrayList<>();
String clicked;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_subscribe);
translateDB = new DatabaseHelper(this);
textView = findViewById(R.id.textView);
lanList = findViewById(R.id.listView);
button = findViewById(R.id.subscribeBtn);
showLang();
}
public void showLang(){
final Cursor cursor = translateDB.retriveLang();
System.out.println("1");
if (cursor.getCount() == 0){
Toast.makeText(Subscribe.this, "No data", Toast.LENGTH_LONG).show();
return;
}
System.out.println("2");
while (cursor.moveToNext()) {
list.add(cursor.getString(1));
}
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_multiple_choice,list);
lanList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
lanList.setAdapter(arrayAdapter);
lanList.setItemChecked(1,true); <--- used this to check the functioning
lanList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
clicked = adapterView.getItemAtPosition(i).toString();
Toast.makeText(Subscribe.this,"You selected '"+ clicked+"' " , Toast.LENGTH_LONG).show();
}
});
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SparseBooleanArray checkedItems =lanList.getCheckedItemPositions();
System.out.println("1 - " +checkedItems);
if (checkedItems != null) {
for (int i=0; i<checkedItems.size(); i++) {
if (checkedItems.valueAt(i)) {
String item = lanList.getAdapter().getItem(
checkedItems.keyAt(i)).toString();
System.out.println("2 - " +item);
translateDB.subscribedLang(item);
}
}
}
}
});
}
*
ТАК, что я планирую сделать, это передать проверенные позиции в БД и получить позиции и lanList.setItemChecked (x, true); и передайте значения позиций этому коду.
Помогите мне с этим.