Java 适配器如何处理android中的空arrayList?

Java 适配器如何处理android中的空arrayList?,java,android,arraylist,Java,Android,Arraylist,我有以下代码: java public class WordAdapter extends ArrayAdapter<Word> { public WordAdapter(Context context, ArrayList<Word> words, int colorResourceId) { super(context, 0, words); mColorResourceId = colorRes

我有以下代码:

java

  public class WordAdapter extends ArrayAdapter<Word>  {

        public WordAdapter(Context context, ArrayList<Word> words, int colorResourceId) {
            super(context, 0, words);
            mColorResourceId = colorResourceId;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            // Check if an existing view is being reused, otherwise inflate the view
            View listItemView = convertView;
            if (listItemView == null) {
                listItemView = LayoutInflater.from(getContext()).inflate(
                        R.layout.list_item, parent, false);
            }

            Word currentWord = getItem(position);


            TextView miwokTextView = (TextView) listItemView.findViewById(R.id.miwok_text_view);

  miwokTextView.setText(currentWord.getMiwokTranslationId());


            TextView defaultTextView = (TextView) listItemView.findViewById(R.id.default_text_view);

            defaultTextView.setText(currentWord.getDefaultTranslationId());


            ImageView imageView = (ImageView) listItemView.findViewById(R.id.image);
            if (currentWord.hasImage()) {
                // If an image is available, display the provided image based on the resource ID
                imageView.setImageResource(currentWord.getImageResourceId());
                // Make sure the view is visible
                imageView.setVisibility(View.VISIBLE);
            } else {
                // Otherwise hide the ImageView (set visibility to GONE)
                imageView.setVisibility(View.GONE);
            }

            // Set the theme color for the list item
            View textContainer = listItemView.findViewById(R.id.text_container);
            // Find the color that the resource ID maps to
            int color = ContextCompat.getColor(getContext(), mColorResourceId);
            // Set the background color of the text container View
            textContainer.setBackgroundColor(color);

            // Return the whole list item layout (containing 2 TextViews) so that it can be shown in
            // the ListView.
            return listItemView;
        }
    }
公共类WordAdapter扩展了ArrayAdapter{
publicWordAdapter(上下文上下文、ArrayList单词、int-colorResourceId){
超级(上下文,0,单词);
mColorResourceId=colorResourceId;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
//检查是否正在重用现有视图,否则会膨胀视图
View listItemView=convertView;
如果(listItemView==null){
listItemView=LayoutFlater.from(getContext()).inflate(
R.layout.list_项,父项,false);
}
Word currentWord=getItem(位置);
TextView miwokTextView=(TextView)listItemView.findViewById(R.id.miwok\u text\u视图);
setText(currentWord.getMiwoktTranslationId());
TextView defaultTextView=(TextView)listItemView.findViewById(R.id.default\u text\u视图);
defaultTextView.setText(currentWord.getDefaultTranslationId());
ImageView ImageView=(ImageView)listItemView.findViewById(R.id.image);
if(currentWord.hasImage()){
//如果图像可用,则根据资源ID显示提供的图像
setImageResource(currentWord.getImageResourceId());
//确保视图可见
设置可见性(View.VISIBLE);
}否则{
//否则隐藏ImageView(将可见性设置为GONE)
设置可见性(View.GONE);
}
//设置列表项的主题颜色
View textContainer=listItemView.findViewById(R.id.text\u容器);
//查找资源ID映射到的颜色
int color=ContextCompat.getColor(getContext(),mColorResourceId);
//设置文本容器视图的背景色
textContainer.setBackgroundColor(颜色);
//返回整个列表项布局(包含2个文本视图),以便在
//列表视图。
返回listItemView;
}
}
MainActivity.java

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        WordAdapter adapter = new WordAdapter(getActivity(),  new ArrayList<Word>(), R.color.category_phrases);

        ListView listView = (ListView) findViewById(R.id.list);

        listView.setAdapter(adapter);
}
}
public类MainActivity扩展了AppCompatActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WordAdapter=newWordAdapter(getActivity(),newArrayList(),R.color.category_短语);
ListView ListView=(ListView)findViewById(R.id.list);
setAdapter(适配器);
}
}
我将空的
ArrayList
传递给
WordAdapter
并运行我的应用程序,应用程序会显示一个白色屏幕(空列表)。在没有数据的适配器中尝试调用
getView()
方法时,为什么应用程序没有崩溃?当数组列表为空时,适配器如何处理这种情况???

很简单

只有当
count
方法返回的值大于0时,才会调用
getView()


这意味着当您添加一个空的
ArrayList
时,您的
计数是
0
,因此不会调用
getView()
,在那里我可以找到这个检查ArrayList是否为空的方法?您的意思是什么?适配器本身会检查计数是否大于0。我需要知道api文档中是否有执行此操作的方法?您只需要实现
getCount()
方法,但不确定要实现什么
ArrayList
has
isEmpty()
method感谢您提供了我所需要的,getCount()方法在另一个方法isEmpty()中调用,这决定是否调用getView(),