java - Android:为什么ArrayAdapter一开始显示null?

标签 java android arrays arraylist

当我填充一个 ArrayAdapter 时,首先屏幕可见部分的行将是空白的,除了第一行,这将是一个不希望的结果。然后当我向下滚动然后返回时,所有屏幕都将正确设置...请有人告诉我为什么会发生这种情况?

代码:

        homeListView = (ListView) findViewById(R.id.home_list);
        homeArrayAdapter = new HomeListArrayAdapter(this, R.id.home_list,
                homeList);
        homeListView.setAdapter(homeArrayAdapter);

下一部分作为扩展 ArrayAdapter 的类,Activity 的内部类:

    public View getView(int position, View convertView, ViewGroup parent) {
        View view = convertView;
        if (view == null) {
            LayoutInflater inflater = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = inflater.inflate(R.layout.home, null);
        }

        Home item = (homeList).get(position);
        if (item != null) {
            if (item.type_text == Home.SIMPLE_SHOUT) {
                TextView tv1 = (TextView) findViewById(R.id.hTextView01);
                if (tv1 != null) {
                    tv1
                            .setText(String.format("   %s\t:",
                                    item.friend_name));
                    final String item_friend_id_01 = String
                            .valueOf(item.users_id);
                    tv1.setOnClickListener(new OnClickListener() {

                        @Override
                        public void onClick(View v) {
                            Toast toast = Toast.makeText(Tranz.this,
                                    item_friend_id_01, Toast.LENGTH_LONG);
                            toast.show();
                        }
                    });
                }
                TextView tv2 = (TextView) findViewById(R.id.hTextView02);
                if (tv2 != null) {
                    tv2.setText(String.format("\t%s", item.message));
                    tv2.setOnClickListener(new OnClickListener() {

                        @Override
                        public void onClick(View v) {
                        }
                    });

                }
                TextView tv3 = (TextView) findViewById(R.id.hTextView03);
                if (tv3 != null) {
                    tv3.setVisibility(0);
                    tv3.setText(null);
                    tv3.setOnClickListener(new OnClickListener() {

                        @Override
                        public void onClick(View v) {
                        }
                    });

                }
                ImageView imageView = (ImageView) findViewById(R.id.file_image);
                if (imageView != null) {
                    imageView.setBackgroundDrawable(null);
                }
            } else if (item.type_text == Home.FILE_SHOUT) {
                TextView tv1 = (TextView) findViewById(R.id.hTextView01);

代码被截断了,所以这里没有完整的代码。对此我感到很抱歉。这里我尝试的是将类 Home 的对象中的值放入两个 textView 和一个 ImageView,这可能因变量 item.type_text 返回的值而异

此外,如果有人可以告诉我执行此操作的另一种最佳做法,请提供帮助。

最佳答案

我不确定这是否是问题所在,但也许这会有所帮助。

我看到您将 null 作为第二个参数传递给 LayoutInflater.inflate。也许如果你传递父级(这是作为第三个参数传递给 getView() 的 ViewGroup,可能是你的 ListView)你会得到更好的结果。

关于java - Android:为什么ArrayAdapter一开始显示null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2342312/

相关文章:

java - 在方法之间重用 PreparedStatement?

arrays - 如何在 swift 中根据另一个数组位置对一个数组进行排序?

javascript - 在预编码的 HTML 中显示 Javascript 数组?

java - 如何从 Android 上的 WebView 中的特定文件夹中打开 html 文件

java - Android 应用程序可以在手机上运行,​​但不能在平板电脑上运行

android - PDFbox 此字体类型仅支持 8 位代码点

java - 检索数组类名

java - java.lang.Long 或 java.util.UUID 是安全的共享 secret 吗?

java - 使用BlockingQueue时的线程同步

java - 相机 onActivityResult : resultCode is RESULT_CANCELED