预期的数组类型;找到了“ java.lang.String” Android Studio

时间:2018-07-20 07:01:18

标签: android-studio

我正在改编自定义列表视图以使其与android studio上的应用程序一起使用,并且在更改代码以使其与其他活动一起使用后,不确定如何解决此问题。

public class CustomListView extends ArrayAdapter<String>
{
private String title;
private String publishDate;
private String movieImg;
private Activity context;

public CustomListView(Activity context, String title, String publishDate, String movieImg)
{
    super(context, R.layout.listview_layout, title);
    this.context = context;
    this.title = title;
    this.publishDate =  publishDate;
    this.movieImg = movieImg;

}

@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent)
{
    View r = convertView;
    ViewHolder viewHolder = null;
    if(r == null)
    {
        LayoutInflater layoutInflater = context.getLayoutInflater();
        r = layoutInflater.inflate(R.layout.listview_layout, null, true);
        viewHolder = new ViewHolder(r);
        r.setTag(viewHolder);
    }
    else {
        viewHolder = (ViewHolder) r.getTag();
    }
    viewHolder.movieImg.setImageResource (movieImg[position]);
    viewHolder.movieTitle.setText(title[position]);
    viewHolder.movieDate.setText(publishDate[position]);

    return r;
}

class ViewHolder
{
    TextView movieTitle;
    TextView movieDate;
    ImageView movieImg;
    ViewHolder(View v)
    {
        movieTitle = v.findViewById(R.id.movieTitle);
        movieDate = v.findViewById(R.id.movieDate);
        movieImg = v.findViewById(R.id.movieImg);
    }
}
}

我更改了另一个活动以从另一个类访问数组,并更改了我的自定义列表视图的代码以使其匹配它,现在我不确定如何解决它,如果可能的话,请做一个简单的解释,以免我同样的错误将不胜感激。谢谢您的宝贵时间。

1 个答案:

答案 0 :(得分:0)

不知道,但是由于没有其他答案,我将尽力提供帮助。此外,问题中提供的信息非常有限。

字符串,而不是数组

问题似乎出在三个变量titlepublishDatemovieImg上。它们显然是字符串。

private String title;
private String publishDate;
private String movieImg;

但是,在代码的后面,它们被视为数组。

viewHolder.movieImg.setImageResource (movieImg[position]);
viewHolder.movieTitle.setText(title[position]);
viewHolder.movieDate.setText(publishDate[position]);

要解决此问题,请消除方括号符号:

viewHolder.movieImg.setImageResource (movieImg);
viewHolder.movieTitle.setText(title);
viewHolder.movieDate.setText(publishDate);

或者,如果方法setImageResourcesetText需要数组,则必须重构变量。

用Java声明字符串数组

String title[];

String[] title;