Last active
March 12, 2018 08:48
-
-
Save bluemyria/5066d03c66ab27b6197c6826f9fe5141 to your computer and use it in GitHub Desktop.
Android 015 - ListView Manipulation / Refresh
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
////////////////////////////////////////////////////////////////////////////////////////////// | |
// in der Activity | |
////////////////////////////////////////////////////////////////////////////////////////////// | |
public class WoerterListe4Activity extends AppCompatActivity { | |
ListView lstVokabel; | |
private Datenbankzugriff datenbankzugriff; | |
private MyListAdapter myLA; | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.activity_woerter_liste4); | |
init(); | |
} | |
private void init() { | |
// Wenn eine andere als die Main Activity DB zugriff braucht, | |
// einfach neu anfordern! | |
datenbankzugriff = new Datenbankzugriff(this); | |
myLA = new MyListAdapter(this, datenbankzugriff); | |
lstVokabel = findViewById(R.id.lstVokabel); | |
lstVokabel.setAdapter(myLA); | |
lstVokabel.setOnItemLongClickListener(new myOILCL()); | |
} | |
private class myOILCL implements AdapterView.OnItemLongClickListener { | |
@Override | |
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { | |
Log.v("XXXXX - onItemLongClick", String.format("position: %d,id: %d ",position,id)); | |
myLA.deleteItem(position); | |
/* Keine bessere Lösung fürs Refreshen der ListView gefunden, als einen neuen | |
* MyListAdapter anzufordern | |
* Eventuell checken: | |
* https://stackoverflow.com/questions/38601316/passing-database-class-object-from-main-activity-to-another-activity | |
* https://stackoverflow.com/questions/2736389/how-to-pass-an-object-from-one-activity-to-another-on-android | |
*/ | |
myLA = new MyListAdapter(WoerterListe4Activity.this, datenbankzugriff); | |
lstVokabel.setAdapter(myLA); | |
return true; | |
} | |
} | |
} | |
////////////////////////////////////////////////////////////////////////////////////////////// | |
// in ListAdapter | |
////////////////////////////////////////////////////////////////////////////////////////////// | |
class MyListAdapter implements ListAdapter { | |
private ArrayList<Wortpaar> eintraege; | |
private Context context; | |
private Datenbankzugriff datenbankzugriff; | |
public MyListAdapter(Context context, Datenbankzugriff datenbankzugriff) { | |
this.context = context; | |
eintraege = new ArrayList<Wortpaar>(); | |
this.datenbankzugriff = datenbankzugriff; | |
eintraegeAusDBLesen(); | |
} | |
public void eintraegeAusDBLesen() { | |
try { | |
eintraege.clear(); | |
ArrayList<String> zeilen = new ArrayList<String>(); | |
zeilen = datenbankzugriff.auslesen( "SELECT ID, English, Deutsch FROM Words;"); | |
for (String zeile: zeilen) { | |
String[] parts = zeile.split(";"); | |
eintraege.add(new Wortpaar(Integer.parseInt(parts[0].toString()), | |
parts[1].toString(), parts[2].toString())); | |
} | |
} catch (Exception ex) { | |
Toast t = Toast.makeText(context, ex.getMessage() + | |
"Aus der DB zu lesen ist nicht möglich", Toast.LENGTH_LONG ); | |
t.show(); | |
} | |
} | |
@Override | |
public boolean areAllItemsEnabled() { | |
return true; | |
} | |
@Override | |
public boolean isEnabled(int i) { | |
return true; | |
} | |
@Override | |
public void registerDataSetObserver(DataSetObserver dataSetObserver) { | |
} | |
@Override | |
public void unregisterDataSetObserver(DataSetObserver dataSetObserver) { | |
} | |
@Override | |
public int getCount() { | |
return eintraege.size(); | |
} | |
@Override | |
public Object getItem(int i) { | |
return eintraege.get(i); | |
} | |
@Override | |
public long getItemId(int i) { | |
return i; | |
} | |
@Override | |
public boolean hasStableIds() { | |
return false; | |
} | |
@Override | |
public View getView(int i, View view, ViewGroup viewGroup) { | |
LayoutInflater li = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); | |
View v = li.inflate(R.layout.listitem, null); | |
TextView tvEng = v.findViewById(R.id.tvEng); | |
TextView tvDeu = v.findViewById(R.id.tvDeu); | |
Wortpaar wp = (Wortpaar) getItem(i); | |
tvEng.setText(wp.eng); | |
tvDeu.setText(wp.deu); | |
return v; | |
} | |
@Override | |
public int getItemViewType(int i) { | |
return 0; | |
} | |
@Override | |
public int getViewTypeCount() { | |
return 1; | |
} | |
@Override | |
public boolean isEmpty() { | |
return getCount() == 0; | |
} | |
public void deleteItem(int positionInList) { | |
int dbIdToDelete; | |
dbIdToDelete = eintraege.get(positionInList).dbId; | |
datenbankzugriff.ausfuehren(String.format("DELETE FROM Words where ID=%d",dbIdToDelete)); | |
eintraegeAusDBLesen(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment