gpt4 book ai didi

Java - Android - MyCustomAdapter

转载 作者:行者123 更新时间:2023-12-01 09:27:58 25 4
gpt4 key购买 nike

您好,我已经创建了自己的适配器来制作自己的自定义 ListView ,并且我遵循了一个简单的教程。

当创建我自己的适配器类时,我必须重写一些方法

我不明白的是:

public class SpecialAdapter extends BaseAdapter {

private static final int MAX_ITEMS = 64;
private LayoutInflater inflater;

public SpecialAdapter(LayoutInflater inflater) {
this.inflater = inflater;
}

@Override
public int getCount() {
return MAX_ITEMS;
}

@Override
public Object getItem(int position) {
return null;
}

@Override
public long getItemId(int position) {
return 0;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null){
convertView = inflater.inflate(R.layout.row,parent,false);
}

TextView large = (TextView) convertView.findViewById(R.id.textView2);

if(position%2 == 0) {
large.setText("Parne");
convertView.setBackgroundColor(Color.parseColor("#F2F2F2"));
}
else{
large.setText("Neparne");
convertView.setBackgroundColor(Color.parseColor("#A1A1A1"));
}
return convertView;
}
}

在 Activity 类中:

        lv = (ListView) findViewById(R.id.listView);
SpecialAdapter adapter = new SpecialAdapter(getLayoutInflater());
lv.setAdapter(adapter);

问题

  • 为什么我必须将 getLayourInflater() 传递到 SpecialAdapter 构造函数中?
  • 适配器如何知道应该显示多少行?它会自动从 getCount 方法获取该信息吗?
  • 如果上述问题成立,getView 方法是否调用了 MAX_ITEMS 次?就像它在循环中一样?
  • getView 中的positionMAX_ITEMS 中的当前循环编号吗?
  • convertView 中传递的内容是什么?
  • ViewGroup 父级 包含什么?

最佳答案

据我所知,这是一个非常定制的适配器,用于演示ListView的使用。

Why do i have to pass the getLayourInflater() into the SpecialAdapter constructor?

您需要膨胀 listview 项的布局,因此您需要 inflater,因此您必须从 传递 inflater >构造函数,或者您必须传递上下文,以便您也可以在适配器中创建inflater

How does the adapter knows how many rows should it display ? does it get that informations from the getCount method automaticaly ?

您已在 getCount() 方法中传递了 MAX_ITEMS,因此它将创建 64 个项目。但请注意,此处只会创建一次性适合屏幕的项目数量,并且当您滚动 listview

时,这些 View 将被回收

If the above question is true is the method getView called the MAX_ITEMS times? like if it was in a loop ?

调用getView()不会根据listview中的项目数量来决定。当滚动 listview

时,它会被调用与渲染 listview items 一样多的次数。

is the position in the getView the current loop number out of the MAX_ITEMS ?

是的,位置将在 0 到 MAX_ITEMS - 1 范围内变化。

what is being passed in the convertView ?

convertView 将是要在 listview 中呈现的项目

what does the ViewGroup parent contains ?

它是对listView的引用

关于Java - Android - MyCustomAdapter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39687971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com