提问者:小点点

重写ArrayAdapter getView()int位置


我正在尝试为listview创建自定义数组适配器,当它覆盖getView方法时,我不理解int position参数,public View getView(int position,@nullable View convertView,@nonnull ViewGroup parent),它是当前视图的索引还是arrayAdapter将从中获取数据的数组列表的索引?

下面是完整的代码。

public class WordAdapter extends ArrayAdapter<Word> {

    public WordAdapter(Activity context, ArrayList<Word> arrList){
        super(context,0, arrList);

    }

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

        View listitemview = convertView;
        if(listitemview == null){
            listitemview = LayoutInflater.from(getContext()).inflate(R.layout.list_item,parent,false);
        }

        Word word = getItem(position);

        TextView defaultView =(TextView) listitemview.findViewById(R.id.english);
        defaultView.setText(word.getmDefaultTranslation());
        TextView miwokView =(TextView) listitemview.findViewById(R.id.miwok);
        miwokView.setText(word.getmMiwokTranslation());

        return listitemview;
    }
}```

共2个答案

匿名用户

我不理解int position参数,public View getView(int position,@nullable View convertView,@nonnull ViewGroup parent)

ArrayAdapter类具有负责创建视图的getView()方法。 因此,在幕后,listview调用此方法来获取特定位置的视图。 有关更多信息arrayAdapter

匿名用户

方法getView()负责向listView提供视图,以便它可以显示ListViewItems。 由getView()方法作为输入的paremeterint position是arrayAdapter将从中获取数据的arrayList的索引。 如您所见,word word=getItem(position);用于获取该位置的数据。