Reputation: 151
so I was trying to follow the tutorial here after a failed attempt with a custom baseadapter. This one seems to be going much smoother but I have run into a problem, probably because my lack of knowledge with java. In the tutorial they add each item as
Weather weather_data[] = new Weather[]
{
new Weather(R.drawable.weather_cloudy, "Cloudy"),
new Weather(R.drawable.weather_showers, "Showers"),
new Weather(R.drawable.weather_snow, "Snow"),
new Weather(R.drawable.weather_storm, "Storm"),
new Weather(R.drawable.weather_sunny, "Sunny")
};
But I am going through a loop so I need to add things a little differently but I'm just not sure on how to go about that. So if someone could help me that would be greatly appreciated!
I'm thinking it would be something like
Weather.add(var1, var2);
but how would I go about initially declaring it? Instead of
Weather weather_data[] = new Weather[]
What should it be to use the ".add()"?
Thank you in advance,
Tyler
EDIT1: I ran into a new problem now. The adapter was set up for an array but now that I changed it to a list what would I have to change in the adapter?
Here is the original adapter:
public class WeatherAdapter extends ArrayAdapter<Weather>{
Context context;
int layoutResourceId;
Weather data[] = null;
public WeatherAdapter(Context context, int layoutResourceId, Weather[] data) {
super(context, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
WeatherHolder holder = null;
if(row == null)
{
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new WeatherHolder();
holder.imgIcon = (ImageView)row.findViewById(R.id.imgIcon);
holder.txtTitle = (TextView)row.findViewById(R.id.txtTitle);
row.setTag(holder);
}
else
{
holder = (WeatherHolder)row.getTag();
}
Weather weather = data[position];
holder.txtTitle.setText(weather.title);
holder.imgIcon.setImageResource(weather.icon);
return row;
}
static class WeatherHolder
{
ImageView imgIcon;
TextView txtTitle;
}
}
Upvotes: 0
Views: 117
Reputation: 1115
Instead of using an array, you could instead use an ArrayList which will allow you to add each item without having to declare an initial capacity.
ArrayList<Weather> weather_data = new ArrayList<Weather>();
In your adapter you would then need to use weather_data.get(i) as opposed to weather_data[i]
Upvotes: 1