Мой список просмотров разбивается на getView. Когда приложение сначала загружает его, он работает хорошо, но как только я как-то уйду от него, или сделаю снимок экрана и попытаюсь разделить сбой приложений. Это пользовательский адаптер.ImageView сбойный пользовательский адаптер в getView()
public class CustomAdapter extends BaseAdapter
{
private List<AlarmItem> alarms;
private Context context;
public CustomAdapter(List<AlarmItem> alarms,Context context)
{
this.context = context;
this.alarms = alarms;
}
@Override
public int getCount() {
return alarms.size();
}
@Override
public AlarmItem getItem(int position) {
return alarms.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
final AlarmItem item = getItem(position);
Holder holder;
if(convertView==null)
{
LayoutInflater layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = layoutInflater.inflate(R.layout.my_alarm_row,parent,false);
holder = new Holder();
holder.image= (RoundedImageView)convertView.findViewById(R.id.picture);
holder.wakeText =(RobotoLight)convertView.findViewById(R.id.waketext);
holder.name =(RobotoRegular)convertView.findViewById(R.id.name);
holder.period = (RobotoLight)convertView.findViewById(R.id.period);
holder.time = (RobotoRegular)convertView.findViewById(R.id.time);
holder.day1 =(RobotoLight)convertView.findViewById(R.id.day1);
holder.day2 =(RobotoLight)convertView.findViewById(R.id.day2);
holder.day3 =(RobotoLight)convertView.findViewById(R.id.day3);
holder.day4 =(RobotoLight)convertView.findViewById(R.id.day4);
holder.day5 =(RobotoLight)convertView.findViewById(R.id.day5);
holder.day6 =(RobotoLight)convertView.findViewById(R.id.day6);
holder.day7 =(RobotoLight)convertView.findViewById(R.id.day7);
}
else
{
holder = (Holder)convertView.getTag();
}
UrlImageViewHelper.setUrlDrawable(holder.image, "http://graph.facebook.com/" + item.getProfileId().trim() + "/picture?style=large");
holder.wakeText.setText(context.getString(R.string.wake_message));
holder.name.setText(item.getName()+" ");
holder.period.setText(item.getPeriod());
holder.time.setText(item.getTime());
/**
* This block code places sets the color of the particular day. If its active
* It sets it to a particular colour if not then the inactive colour remains.
*/
List<RobotoLight> dayList = new ArrayList<RobotoLight>();
dayList.add(holder.day1);
dayList.add(holder.day2);
dayList.add(holder.day3);
dayList.add(holder.day4);
dayList.add(holder.day5);
dayList.add(holder.day6);
dayList.add(holder.day7);
for(int x=0;x<7;x++)
{
/**
* if the day at a particular point in the string is equal to one that means its active
* therefore set active color.
*/
if(item.getDays().charAt(x) == '1')
{
dayList.get(x).setTextColor(R.color.alarm_day_active);
}
else
{
dayList.get(x).setTextColor(R.color.alarm_day_inactive);
}
}
return convertView;
}
public static class Holder
{
RoundedImageView image;
RobotoLight wakeText;
RobotoRegular name;
RobotoLight period;
RobotoRegular time;
RobotoLight day1;
RobotoLight day2;
RobotoLight day3;
RobotoLight day4;
RobotoLight day5;
RobotoLight day6;
RobotoLight day7;
}
}
Это мой журнал кот
09-04 08:02:45.948: ERROR/AndroidRuntime(9402): FATAL EXCEPTION: main
java.lang.NullPointerException
at com.wake.friend.adapter.AlarmAdapter.getView(AlarmAdapter.java:82)
at android.widget.AbsListView.obtainView(AbsListView.java:2334)
at android.widget.ListView.makeAndAddView(ListView.java:1937)
at android.widget.ListView.fillSpecific(ListView.java:1483)
at android.widget.ListView.layoutChildren(ListView.java:1765)
at android.widget.AbsListView.onLayout(AbsListView.java:2178)
at android.view.View.layout(View.java)
at android.view.ViewGroup.layout(ViewGroup.java:4380)
at android.widget.RelativeLayout.onLayout(RelativeLayout.java:948)
at android.view.View.layout(View.java)
at android.view.ViewGroup.layout(ViewGroup.java:4380)
at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
at android.view.View.layout(View.java)
at android.view.ViewGroup.layout(ViewGroup.java:4380)
at android.support.v4.view.ViewPager.onLayout(ViewPager.java:1141)
at android.view.View.layout(View.java)
И линия 82, что они говорят, нулевой указатель исключение выбрасывают на это.
UrlImageViewHelper.setUrlDrawable(holder.image, "http://graph.facebook.com/" + item.getProfileId().trim() + "/picture?style=large");
Я использую помощник по загрузке изображений для извлечения изображений из Интернета.
Ошибка должна быть в этом фрагменте item.getProfileId(). Дифферент() –
это еще не вызывает ошибку. –
Используете ли вы Log.d (String, String), чтобы проверить его значение не null? –