Skip to content

Instantly share code, notes, and snippets.

@bluemyria
Created March 7, 2018 09:42
Show Gist options
  • Save bluemyria/4a3d4f7459a77d8635cb5859d36748dc to your computer and use it in GitHub Desktop.
Save bluemyria/4a3d4f7459a77d8635cb5859d36748dc to your computer and use it in GitHub Desktop.
Android - 010 - ListView
//////////////////////////////////////////////////////////////////////////////////////////////
// in MainActivity
//////////////////////////////////////////////////////////////////////////////////////////////
public class MainActivity extends AppCompatActivity {
private ListView lv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
private void init() {
lv = findViewById(R.id.lv);
// Die Klasse ListView benötigt mehrere Methoden um ihnen Inhalt
// anzeigen zu koennen. Sobald der ListView ein Adapter zugewiesen wird,
// kann sie darauf vertrauen dass alle benötigten Methoden zur Verfügung stehen
// deshalb muss der Adapter das ListAdapter implementieren
// In der ListView gibt es eine Schleife die von 0 bis getcount() laeuft und die
// getView() aufruft.(wir haben keinen Ein
lv.setAdapter(new MyListAdapter(this));
}
}
//////////////////////////////////////////////////////////////////////////////////////////////
// in MyListAdapter (implements ListAdapter)
//////////////////////////////////////////////////////////////////////////////////////////////
public class MyListAdapter implements ListAdapter {
private ArrayList<String> eintraege;
// context is the "this" of MainActivity
private Context context;
public MyListAdapter(Context context) {
this.context = context;
eintraege = new ArrayList<String>();
for (int i=1;i<=100;i++)
eintraege.add("Zeileneintrag " +i);
}
@Override
public boolean areAllItemsEnabled() {
return false;
}
@Override
public boolean isEnabled(int i) {
return false;
}
@Override
public void registerDataSetObserver(DataSetObserver dataSetObserver) {
}
@Override
public void unregisterDataSetObserver(DataSetObserver dataSetObserver) {
}
@Override
public int getCount() {
return eintraege.size();
}
@Override
public Object getItem(int position) {
return eintraege.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
// Sind die IDs stabil, also unveränderbar?
@Override
public boolean hasStableIds() {
return false;
}
@Override
public View getView(int position, View convertView, ViewGroup viewGroup) {
Log.v("XXXXX", "position " + position + ", convertView = " + convertView);
// we reclycle the views. If one existing view is available, the calling function
// passes it to us and we can use it. Otherwise convertView is null and we have to create
// a new one
TextView tv;
if(convertView == null)
tv = new TextView(context);
else
tv = (TextView) convertView;
tv.setText(eintraege.get(position));
return tv;
}
// Welche Zeilen Optik soll an der Position verwendet werden?
// wenn nur eine existiert, nehmen wir 0
@Override
public int getItemViewType(int i) {
return 0;
}
// Wie viele verschiedene zeilen-Optiken haben wir?
@Override
public int getViewTypeCount() {
return 1;
}
@Override
public boolean isEmpty() {
return getCount() == 0;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment