How to connect two cursors through the cursorloader? So far I have the following
public class MainActivity extends AppCompatActivity implements LoaderManager.LoaderCallbacks<Cursor> { private AutoCompleteTextView txtSearch; private Spinner spinner; private ListView list; private ImageButton btnClear; DBHeler db; private MyCursorAdapter cursorAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); db = new DBHeler(this); try { db.createDataBase(); db.openDataBase(); } catch (IOException ex) { ex.printStackTrace(); } spinner = (Spinner) findViewById(R.id.spinner); // ΠΠ°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌ Π°Π΄Π°ΠΏΡΠ΅Ρ ArrayAdapter<?> adapter = ArrayAdapter.createFromResource(this, R.array.types, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // ΠΡΠ·ΡΠ²Π°Π΅ΠΌ Π°Π΄Π°ΠΏΡΠ΅Ρ spinner.setAdapter(adapter); txtSearch = (AutoCompleteTextView) findViewById(R.id.txtSearch); list = (ListView) findViewById(R.id.list); btnClear = (ImageButton) findViewById(R.id.btnClear); /*ΠΡΠ²ΠΎΠ΄ΠΈΠΌ Π² ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅ ΡΠ»ΠΎΠ²Π°, ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ*/ String selectedItem = spinner.getSelectedItem().toString(); if (selectedItem.equals("Π‘ ΡΡΡΡΠΊΠΎΠ³ΠΎ Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈΠΉ")) { cursorAdapter = new MyCursorAdapter(this, R.layout.item, null, 0); list.setAdapter(cursorAdapter); } else if (selectedItem.equals("Π‘ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠ³ΠΎ Π½Π° ΡΡΡΡΠΊΠΈΠΉ")) { cursorAdapter = new MyCursorAdapter(this, R.layout.item, null, 0); list.setAdapter(cursorAdapter); } } @Override protected void onResume() { super.onResume(); txtSearch.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View view, boolean b) { if (b && txtSearch.getText().toString().length() > 0) btnClear.setVisibility(View.VISIBLE); else btnClear.setVisibility(View.INVISIBLE); } }); txtSearch.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { } @Override public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { if(charSequence.length() != 0){ btnClear.setVisibility(View.VISIBLE); }else{ btnClear.setVisibility(View.INVISIBLE); } } @Override public void afterTextChanged(Editable editable) { } }); list.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { Intent intent = new Intent(MainActivity.this, SlovoActivity.class); CharSequence strCharSequence = ((TextView)view.findViewById(R.id.txtSlovo)).getText(); String str = strCharSequence.toString().toLowerCase().trim(); String selectedItem = spinner.getSelectedItem().toString(); if (selectedItem.equals("Π‘ ΡΡΡΡΠΊΠΎΠ³ΠΎ Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈΠΉ")) { intent.putExtra("slovo", str); intent.putExtra("type", "RU"); startActivity(intent); } else if (selectedItem.equals("Π‘ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠ³ΠΎ Π½Π° ΡΡΡΡΠΊΠΈΠΉ")) { intent.putExtra("slovo", str); intent.putExtra("type", "EN"); startActivity(intent); } } }); spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { txtSearch.setText(""); String str = adapterView.getItemAtPosition(i).toString(); if (str.equals("Π‘ ΡΡΡΡΠΊΠΎΠ³ΠΎ Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈΠΉ")) { getSupportLoaderManager().initLoader(0, null, MainActivity.this); } else if (str.equals("Π‘ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠ³ΠΎ Π½Π° ΡΡΡΡΠΊΠΈΠΉ")) { } } @Override public void onNothingSelected(AdapterView<?> adapterView) { } }); } protected void onDestroy() { super.onDestroy(); // Π·Π°ΠΊΡΡΠ²Π°Π΅ΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈ Π²ΡΡ
ΠΎΠ΄Π΅ db.close(); } @Override public Loader onCreateLoader(int id, Bundle args) { return new MyCursorLoader(this, db); } @Override public void onLoadFinished(Loader<Cursor> loader, Cursor data) { cursorAdapter.swapCursor(data); } @Override public void onLoaderReset(Loader<Cursor> loader) { } static class MyCursorLoader extends CursorLoader { DBHeler db; public MyCursorLoader(Context context, DBHeler db) { super(context); this.db = db; } @Override public Cursor loadInBackground() { Cursor cursor = db.getRuWords(); return cursor; } } } I need to select the data from the db.getRuWords () cursor in the listView when selecting the value "From Russian to English" in the listView, and if I select the value "From English to Russian", to display the data from the db.getEnWords cursor (). how should the code look like I donβt understand everything?
MADE SO. BUT DOES NOT WORK anyway
public class MainActivity extends AppCompatActivity implements LoaderManager.LoaderCallbacks<Cursor> { private AutoCompleteTextView txtSearch; private Spinner spinner; private ListView list; private ImageButton btnClear; private final int RULOADER = 1; private final int ENLOADER = 1; DBHeler db; private MyCursorAdapter cursorAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); db = new DBHeler(this); try { db.createDataBase(); db.openDataBase(); } catch (IOException ex) { ex.printStackTrace(); } spinner = (Spinner) findViewById(R.id.spinner); // ΠΠ°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌ Π°Π΄Π°ΠΏΡΠ΅Ρ ArrayAdapter<?> adapter = ArrayAdapter.createFromResource(this, R.array.types, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // ΠΡΠ·ΡΠ²Π°Π΅ΠΌ Π°Π΄Π°ΠΏΡΠ΅Ρ spinner.setAdapter(adapter); txtSearch = (AutoCompleteTextView) findViewById(R.id.txtSearch); list = (ListView) findViewById(R.id.list); btnClear = (ImageButton) findViewById(R.id.btnClear); /*ΠΡΠ²ΠΎΠ΄ΠΈΠΌ Π² ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅ ΡΠ»ΠΎΠ²Π°, ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ*/ String selectedItem = spinner.getSelectedItem().toString(); if (selectedItem.equals("Π‘ ΡΡΡΡΠΊΠΎΠ³ΠΎ Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈΠΉ")) { cursorAdapter = new MyCursorAdapter(this, R.layout.item, null, 0); list.setAdapter(cursorAdapter); } else if (selectedItem.equals("Π‘ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠ³ΠΎ Π½Π° ΡΡΡΡΠΊΠΈΠΉ")) { cursorAdapter = new MyCursorAdapter(this, R.layout.item, null, 0); list.setAdapter(cursorAdapter); } } @Override protected void onResume() { super.onResume(); txtSearch.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View view, boolean b) { if (b && txtSearch.getText().toString().length() > 0) btnClear.setVisibility(View.VISIBLE); else btnClear.setVisibility(View.INVISIBLE); } }); txtSearch.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { } @Override public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { if(charSequence.length() != 0){ btnClear.setVisibility(View.VISIBLE); }else{ btnClear.setVisibility(View.INVISIBLE); } } @Override public void afterTextChanged(Editable editable) { } }); list.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { Intent intent = new Intent(MainActivity.this, SlovoActivity.class); CharSequence strCharSequence = ((TextView)view.findViewById(R.id.txtSlovo)).getText(); String str = strCharSequence.toString().toLowerCase().trim(); String selectedItem = spinner.getSelectedItem().toString(); if (selectedItem.equals("Π‘ ΡΡΡΡΠΊΠΎΠ³ΠΎ Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈΠΉ")) { intent.putExtra("slovo", str); intent.putExtra("type", "RU"); startActivity(intent); } else if (selectedItem.equals("Π‘ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠ³ΠΎ Π½Π° ΡΡΡΡΠΊΠΈΠΉ")) { intent.putExtra("slovo", str); intent.putExtra("type", "EN"); startActivity(intent); } } }); spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { txtSearch.setText(""); String str = adapterView.getItemAtPosition(i).toString(); if (str.equals("Π‘ ΡΡΡΡΠΊΠΎΠ³ΠΎ Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈΠΉ")) { getSupportLoaderManager().initLoader(RULOADER, null, MainActivity.this); list.setAdapter(cursorAdapter); } else if (str.equals("Π‘ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠ³ΠΎ Π½Π° ΡΡΡΡΠΊΠΈΠΉ")) { getSupportLoaderManager().initLoader(ENLOADER, null, MainActivity.this); list.setAdapter(cursorAdapter); } } @Override public void onNothingSelected(AdapterView<?> adapterView) { } }); } protected void onDestroy() { super.onDestroy(); // Π·Π°ΠΊΡΡΠ²Π°Π΅ΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈ Π²ΡΡ
ΠΎΠ΄Π΅ db.close(); } @Override public Loader onCreateLoader(int id, Bundle args) { if (id == RULOADER) { return new RuWords(MainActivity.this, db); } else { return new EnWords(MainActivity.this, db); } } @Override public void onLoadFinished(Loader<Cursor> loader, Cursor data) { //cursorAdapter.swapCursor(data); if(loader instanceof RuWords) { cursorAdapter.swapCursor(data); } else { cursorAdapter.swapCursor(data); } } @Override public void onLoaderReset(Loader<Cursor> loader) { } static class RuWords extends CursorLoader { DBHeler db; public RuWords(Context context, DBHeler db) { super(context); this.db = db; } @Override public Cursor loadInBackground() { Cursor cursor = db.getRuWords(); return cursor; } } static class EnWords extends CursorLoader { DBHeler db; public EnWords(Context context, DBHeler db) { super(context); this.db = db; } @Override public Cursor loadInBackground() { Cursor cursor = db.getEnWords(); return cursor; } } } What's wrong?