Проблема с ArrayAdapter <String>Я не могу показать данные из строки [] - PullRequest
0 голосов
/ 21 апреля 2011

Первое спасибо заранее за любую помощь.

Я не получил исключения в этом коде, но по какой-то причине я не могу показать список данных.

из моей деятельности

ListView mRemindersList = (ListView) findViewById(R.id.list_reminders);
String[] mTimes = getResources().getStringArray(R.array.eventTimes);

mRemindersList.setAdapter(new ReminderAdapter(this,
    R.layout.reminders_list, mTimes));

мои данные, называемые EvenTimes(R.array.eventTimes)

<string-array name="eventTimes">
    <item name="None">None</item>
    <item name="5m">5 minutes before</item>
    <item name="15m">15 minutes before</item>
    <item name="30m">30 minutes before</item>
    <item name="1h">1 hour before</item>
    <item name="2h">2 hour before</item>
    <item name="1d">1 day before</item>
</string-array> 

это мой адаптер, который является вложенным классом в моей деятельности

private class ReminderAdapter extends ArrayAdapter<String> {

    private int resId;
    private LayoutInflater mInflater;

    /**
     * @param context
     * @param resource
     * @param objects
     */
    public ReminderAdapter(Context context, int resId, String[] objects) {
        super(context, resId, objects);
        this.resId = resId;
        this.mInflater= (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        this.items = objects;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        TextView remider = null;

      if (convertView == null) {
        convertView = mInflater.inflate(resId, parent, false);

        remider = (TextView) convertView.findViewById(R.id.reminder);
        }

        String time = (String) getItem(position);
        remider.setText(time);

        return convertView;

    }
 }

, и это текстовое представление с данными.

<TextView android:id="@+id/reminder" android:layout_gravity="center"
        android:layout_width="fill_parent" android:layout_height="30dip"
     android:textColor="#000000"
     android:singleLine="true" />

любой совет.

Ура Рон

1 Ответ

0 голосов
/ 21 апреля 2011

Если ваше представление для преобразования не является нулевым, вы не получаете remider, поэтому это может быть нулевым при вызове remider.setText(time);, и метод getView() завершится неудачно с NPE.

Естьпосмотрите на документы для правильной реализации шаблона держателя вида (например, в этот пример ; я не могу найти статью, которая объясняет этот atm) ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...