片段中ListView的android自定义适配器

时间:2018-11-11 02:13:44

标签: android listview android-fragments custom-adapter

我已经为片段中的ListView创建了自己的自定义适配器。我相信我的一切都正确,但是启动我的应用程序时它仍然引发错误,并且崩溃。我尝试对其进行调试,但最终无法找到问题。

这是我的片段代码:

execl*()

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; } } 方法中的问题,但是我无法查明问题所在。 任何帮助将不胜感激。

编辑:

此问题不是重复的 this NullPointerException question

我的问题专门涉及Android Studio中的fragment / customAdapter组合,而上面的链接只是有关NPE是什么以及如何修复它的指南。

1 个答案:

答案 0 :(得分:0)

好的,结果证明适配器类没有问题,它可以按预期完美运行。我的问题是:

ArrayList<PRObject> PRList;

设置为未在我的片段类中初始化。

解决方法是将其更改为:

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

现在可以按预期加载视图。希望有人可以在我的适配器类之外使用它,因为它起作用了,哈哈

为大家加油!