java - Android 中的 TextView 的字符串不像以前在自定义适配器中那样显示

标签 java android android-studio

我使用的自定义适配器格式与我在其他应用程序中使用的格式相同。我只更改了字符串引用,但在运行应用程序时出现以下错误:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference

我一直在努力思考这个问题,但我无法弄清楚问题出在哪里。一切都与其他应用程序完全相同,但由于某种原因在这个应用程序中不起作用。一切都完全一样。唯一的区别是从中提取数据的数据库表。这是我的 getView 产生的错误:

public class Holder
{
    TextView title;
    TextView description;
    NetworkImageView img;
    RatingBar rating;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {

    Holder holder=new Holder();
    View rowView;
    rowView = inflater.inflate(R.layout.product_row, null);
    holder.title=(TextView) rowView.findViewById(R.id.productName);
    holder.img=(NetworkImageView) rowView.findViewById(R.id.productPic);
    holder.rating=(RatingBar)rowView.findViewById(R.id.ratingBar2);
    holder.title.setText(result.get(position).getName());
    holder.rating.setRating(Float.valueOf(result.get(position).getRating().toString()));

    // If you are using NetworkImageView
    holder.img.setImageUrl(result.get(position).getImageURL(), VolleyController.getInstance().getImageLoader());

    return rowView;
}

我的行数据/模型也完全一样。给出错误的行是:

holder.title.setText(result.get(position).getName());

在我的 RowData 模型中,getName 是这样的:

public String getName(){
    return name;

最佳答案

用这些代码行替换你的代码。在你的代码中,你没有使用 BaseAdaptergetView() 方法的 View convertView 而不是它,你使用了自己的 View rowView ,因此你面临这些问题。所以使用 adapter 类的 getView() 方法的 View

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

    Holder holder=new Holder();

    if (convertView == null) {

     convertView = inflater.inflate(R.layout.product_row, null);
     holder.title=(TextView) convertView.findViewById(R.id.productName);
     holder.img=(NetworkImageView) convertView.findViewById(R.id.productPic);
     holder.rating=(RatingBar)convertView.findViewById(R.id.ratingBar2);

     convertView.setTag(holder);
   }
   else
   {
       holder = (ViewHolder) convertView.getTag();
   }
       holder.title.setText(result.get(position).getName());
       holder.rating.setRating(Float.valueOf(result.get(position).getRating().toString()));


    // If you are using NetworkImageView
     holder.img.setImageUrl(result.get(position).getImageURL(), VolleyController.getInstance().getImageLoader());

    return convertView;
}

关于java - Android 中的 TextView 的字符串不像以前在自定义适配器中那样显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35720222/

相关文章:

android - 无法获取 facebook sdk 示例中好友列表的所有字段以及在 Android 中仅获取 id、name 的好友选择器示例中的好友列表

android - 无法在 android 设备上调试应用程序 - Android Studio 2.0

安卓工作室 : "Waiting for device." Trying to run app on phone

android - 升级到 Android Studio 2.3 后无法构建任何项目

java - 如何将数字从最小到最大排序 - Java?

java - spring如何使用一个web环境进行多个测试

java - 为什么在 java 中 'joined' 线程启动之前 join() 方法之前的行不打印?

java - cometd : Multiple tabs for online-users management creating false online-status

android - webview 加载包含 .js 的本地 html 文件作为 <script src>

java - 如何创建一个简单/空的 Java 库项目来编译为 Unity 的 Android 服务?