public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = LayoutInflater.from(parent.getContext()) .inflate(android.R.layout.simple_list_item_1, parent, false); } TextView textView=convertView.findViewById(R.id.rv_list); textView.setText( mData.get(position).toString()); return convertView; } java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference怎么解决
时间: 2024-01-11 22:02:27 浏览: 116
Android LayoutInflater.inflate源码分析
这个错误是因为 `TextView` 对象为 null,所以无法调用 `setText` 方法。可能是因为 `convertView` 中没有找到 `R.id.rv_list` 的 `TextView` 对象。
你可以尝试检查以下几个方面:
1. 确保 `android.R.layout.simple_list_item_1` 中包含 id 为 `R.id.rv_list` 的 `TextView`。
2. 确保你的 `mData` 数据源不为空,且 `position` 位置上有数据。
3. 确保你的 `convertView` 不为空。
如果以上都没问题,你可以尝试将 `TextView textView=convertView.findViewById(R.id.rv_list);` 放在 `if (convertView == null)` 之外,就像这样:
```
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(parent.getContext())
.inflate(android.R.layout.simple_list_item_1, parent, false);
}
TextView textView;
if(convertView.findViewById(R.id.rv_list) == null) {
textView = new TextView(parent.getContext());
textView.setId(R.id.rv_list);
convertView.addView(textView);
} else {
textView = convertView.findViewById(R.id.rv_list);
}
textView.setText(mData.get(position).toString());
return convertView;
}
```
这样,当 `convertView` 中没有 `R.id.rv_list` 的 `TextView` 时,会创建一个新的 `TextView` 对象,并将其添加到 `convertView` 中。
阅读全文