Created
March 7, 2018 09:42
-
-
Save bluemyria/4a3d4f7459a77d8635cb5859d36748dc to your computer and use it in GitHub Desktop.
Android - 010 - ListView
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 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