For some reason when I use this code it doesn't work properly. Instead of putting each crossroad in its place, it puts the last one in the first and the rest are empty.
package com.Itay.lightalaram.lightalarm;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
public class CrossroadsActivity extends Activity {
private List<Crossroad> crossroads;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.crossroads);
crossroads = new ArrayList<Crossroad>();
populateListView();
}
private void populateListView() {
ListView list = (ListView) findViewById(R.id.crossroadsListView);
crossroads.add(new Crossroad("Oranim", 50, 30));
crossroads.add(new Crossroad("Evelina", 40, 85));
crossroads.add(new Crossroad("Sacker", 43, 22));
crossroads.add(new Crossroad("bagger", 43, 22));
ArrayAdapter<Crossroad> adapter = new CrossroadAdapter();
list.setAdapter(adapter);
}
private class CrossroadAdapter extends ArrayAdapter<Crossroad> {
public CrossroadAdapter(){
super(CrossroadsActivity.this, R.layout.item_crossroad, crossroads);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View itemView = convertView;
if(null == itemView) {
itemView = getLayoutInflater().inflate(R.layout.item_crossroad, parent, false);
Crossroad currentCrossroad = crossroads.get(position);
TextView name = (TextView) findViewById(R.id.item_crossroadName);
TextView redLight = (TextView) findViewById(R.id.item_redLightDuration);
TextView greenLight = (TextView) findViewById(R.id.item_greenLightDuration);
try {
name.setText(currentCrossroad.getName());
redLight.setText("" + currentCrossroad.getRedLight());
greenLight.setText("" + currentCrossroad.getGreenLight());
} catch (Exception e) {
}
return itemView;
}
return null;
}
}
}
Output: