пользовательский адаптер Android для ListView во фрагменте - PullRequest
0 голосов
/ 11 ноября 2018

Я создал свой собственный адаптер для ListView, который находится во фрагменте. Я считаю, что у меня все правильно, но все равно выдает ошибку при запуске моего приложения, и он вылетает. Я попытался отладить его, но не смог найти проблему.

Вот мой код для фрагмента:

public class TabFragment0 extends Fragment {

Button addPR;
ArrayList<PRObject> PRList;
PRObjectAdapter PRListAdapter;
private ListView listViewer;
private final String PRKey = "PRArgs";

public TabFragment0() {
    // Required empty public constructor
}

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.tab_personalrecords, container, 
        false);
    if(loadList(PRKey) != null) {
        PRList = loadList(PRKey);
    }
    PRListAdapter = new PRObjectAdapter(getActivity(), PRList);
    listViewer = (ListView) view.findViewById(R.id.prListView);
    listViewer.setAdapter(PRListAdapter);
...................................................

Строка listViewer.setAdapter(PRListAdapter); - это то, что выдает ошибку. Я также пробовал PRListAdapter = new PRObjectAdapter(this.getActivity(), PRList); так же хорошо, как PRListAdapter = new PRObjectAdapter(getContext(), PRList);, но безрезультатно.

Вот мой код для класса адаптера:

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.EditText;
import android.widget.TextView;
import java.util.ArrayList;

public class PRObjectAdapter extends BaseAdapter {

private LayoutInflater inflater;
private ArrayList<PRObject> objects;

private class ViewHolder {
    TextView textview1;
    TextView textview2;
}

public PRObjectAdapter(Context context, ArrayList<PRObject> objects) {
    inflater = LayoutInflater.from(context);
    this.objects = objects;
}

@Override
public int getCount() {
    return objects.size();
}

@Override
public Object getItem(int position) {
    return objects.get(position);
}

@Override
public long getItemId(int position) {
    return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    PRObjectAdapter.ViewHolder holder = null;
    if(convertView == null) {
        holder = new PRObjectAdapter.ViewHolder();
        convertView = inflater.inflate(R.layout.pr_item_layout, null);
        holder.textview1 = (TextView) 
                   convertView.findViewById(R.id.prTitleTV);
        holder.textview2 = (TextView) 
                   convertView.findViewById(R.id.prNumTV);
        convertView.setTag(holder);
    } else {
        holder = (PRObjectAdapter.ViewHolder) convertView.getTag();
    }
    holder.textview1.setText(objects.get(position).getTitle());
    holder.textview2.setText(objects.get(position).getNum());
    return convertView;
}
}

Я хочу сказать, что проблема в моем методе View getView, но я не могу точно определить проблему. Любая помощь будет принята с благодарностью.

РЕДАКТИРОВАТЬ:

Этот вопрос не является дубликатом этот вопрос об исключении NullPointerException

Мой вопрос, в частности, относится к комбинации фрагмент / настраиваемый адаптер в Android Studio, тогда как приведенная выше ссылка является просто руководством о том, что такое NPE и как его исправить.

1 Ответ

0 голосов
/ 11 ноября 2018

Хорошо, получается, что с классом адаптера все в порядке, все работает отлично, как задумано.Моя проблема заключалась в том, что:

ArrayList<PRObject> PRList;

было установлено без инициализации в моем классе фрагментов.

Исправление было изменить на:

ArrayList<PRObject> PRList = new ArrayList<PRObject>();

Теперь представление загружается как задумано.Надеюсь, кто-то может использовать мой класс адаптера, так как он работает, хахах

Приветствую всех!

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