我正在改编自定义列表视图以使其与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);
}
}
}
我更改了另一个活动以从另一个类访问数组,并更改了我的自定义列表视图的代码以使其匹配它,现在我不确定如何解决它,如果可能的话,请做一个简单的解释,以免我同样的错误将不胜感激。谢谢您的宝贵时间。
答案 0 :(得分:0)
我不知道,但是由于没有其他答案,我将尽力提供帮助。此外,问题中提供的信息非常有限。
字符串,而不是数组
问题似乎出在三个变量title
,publishDate
,movieImg
上。它们显然是字符串。
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);
或者,如果方法setImageResource
和setText
需要数组,则必须重构变量。
用Java声明字符串数组
String title[];
或
String[] title;