Android ListView的自定义适配器忽略设置值

Android ListView的自定义适配器忽略设置值,android,listview,android-listview,android-arrayadapter,android-listadapter,Android,Listview,Android Listview,Android Arrayadapter,Android Listadapter,我将创建一个标签和图标的列表视图 以下是我所做的: 我创建了一个名为cardList的空白ListView。 我创建了一个扩展ArrayAdapter 我已经将卡片列表设置为该自定义视图: cardList = findViewById(R.id.cards_list); CustomView customView = new CustomView(this, names, images); cardList.setAdapter(customView); 在哪里 CustomView类: p

我将创建一个标签和图标的列表视图

以下是我所做的:
我创建了一个名为
cardList
的空白
ListView

我创建了一个扩展
ArrayAdapter

我已经将
卡片列表设置为该自定义视图:

cardList = findViewById(R.id.cards_list);
CustomView customView = new CustomView(this, names, images);
cardList.setAdapter(customView);
在哪里

CustomView
类:

package ...

import ...

public class CustomView extends ArrayAdapter<String> {

    private String[] names;
    private Integer[] images;
    private Activity context;

    CustomView(Activity context, String[] names, Integer[] images) {
        super(context, R.layout.card_row, R.id.cardName, names);
        this.context = context;
        this.names = names;
        this.images = images;
    }

    @SuppressLint("InflateParams")
    @NonNull
    @Override
    public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
        View r = convertView;
        ViewHolder viewHolder;
        if (r == null) {
            LayoutInflater layoutInflater = context.getLayoutInflater();
            r = layoutInflater.inflate(R.layout.card_row, null, true);
            viewHolder = new ViewHolder(r);
            r.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) r.getTag();
        }
        viewHolder.name.setText(/*skipping: names[position]*/"Some text");
        viewHolder.name.setTypeface(Typeface.createFromAsset(AppName.assetManager, "fonts/prototype.ttf"));
        viewHolder.image.setImageResource(images[position]);
        return super.getView(position, convertView, parent);
    }

    class ViewHolder {
        TextView name;
        ImageView image;
        ViewHolder(View v) {
            name = v.findViewById(R.id.cardName);
            image = v.findViewById(R.id.symbolImg);
        }
    }
}

调试表明应用程序已经完成了这一部分,但是应该在其中设置的所有内容都被忽略了。我遗漏了什么吗?

当您从
getView
返回父视图时,您的自定义视图将被忽略,而不是您的父视图

使用

而不是

return super.getView(position, convertView, parent);

使用recyclerview而不是listview。我犯了一个多么愚蠢的错误。。。我太粗心了。无论如何,谢谢你@桑德拉,你会来的。
viewHolder.name.setText(/*skipping: names[position]*/"Some text");
viewHolder.name.setTypeface(Typeface.createFromAsset(AppName.assetManager, "fonts/prototype.ttf"));
viewHolder.image.setImageResource(images[position]);
return r;
return super.getView(position, convertView, parent);