Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AlertDialog中的Android Eclipse ListView在滚动时隐藏某些文本视图_Android_Eclipse_Android Listview_Textview_Android Alertdialog - Fatal编程技术网

AlertDialog中的Android Eclipse ListView在滚动时隐藏某些文本视图

AlertDialog中的Android Eclipse ListView在滚动时隐藏某些文本视图,android,eclipse,android-listview,textview,android-alertdialog,Android,Eclipse,Android Listview,Textview,Android Alertdialog,我在alertDialog中有一个列表视图。我使用自定义resourceCursorAdapter填充列表视图,每行包含标题文本视图、日期文本视图和图像 一切都很好,除了滚动listview时,某些行中的某些日期文本视图会消失。我已经弄明白了它们为什么会消失,只是不知道如何修复它。。。有些项目并不打算显示日期,所以我在bindview上有一个if语句,它决定是否应该显示日期。这适用于alertdialog之外的任何列表,但它会使一些原本要显示的日期不可见。有人知道为什么会这样吗 警报对话框和列表

我在alertDialog中有一个列表视图。我使用自定义resourceCursorAdapter填充列表视图,每行包含标题文本视图、日期文本视图和图像

一切都很好,除了滚动listview时,某些行中的某些日期文本视图会消失。我已经弄明白了它们为什么会消失,只是不知道如何修复它。。。有些项目并不打算显示日期,所以我在bindview上有一个if语句,它决定是否应该显示日期。这适用于alertdialog之外的任何列表,但它会使一些原本要显示的日期不可见。有人知道为什么会这样吗

警报对话框和列表视图的我的代码:

itemSendPickerDialog = new Dialog(this);
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("Select Item to Send");

        ListView lv = new ListView(this);
        lv.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long i) {


                }
            });
        AlertDialog sendOptionAlert = sendOptionBuilder.create();

                         sendOptionAlert.show();

                    System.out.println("ID is: " + iid + " and position is: " + position);
                    itemSendPickerDialog.dismiss();
                    }
            });
        Cursor c = mDbHelper.fetchItemsByDate(id);
        c.moveToFirst();

        int i = R.layout.send_item_menu_row;
        MyListAdapter ia = new MyListAdapter(this, i, c);
        lv.setAdapter(ia);

        builder.setView(lv);
        itemSendPickerDialog = builder.create();
        itemSendPickerDialog.show();
使文本消失的特定代码位于bindview替代中:

String cat = cursor.getString(cursor.getColumnIndex(TripsDbAdapter.KEY_ITEM_CATEGORY));

        if (cat.equalsIgnoreCase("trip notes")) {   
            LinearLayout ll = (LinearLayout) view.findViewById(R.id.item_datetime_holder);
            ll.setVisibility(View.INVISIBLE);
        }

ListView中的视图是循环的,当该行在底部消失时,它会出现在列表的顶部。这不是再创造,而是优化。在
bindView()
中,您仅设置当前值

您忘记了将视图设置为可见

    LinearLayout ll = (LinearLayout) view.findViewById(R.id.item_datetime_holder);
    if (cat.equalsIgnoreCase("trip notes")) {   
        ll.setVisibility(View.INVISIBLE);
    } else {
        ll.setVisibility(View.VISIBLE);
    }

值得一看:

最棒。非常感谢您的回答和参考阅读!我没有意识到清单上的项目实际上是按原样回收的。但有一个问题。。。这修复了我的问题,但是为什么我在使用相同的代码时没有遇到相同的问题,但在警报对话框中没有listview?所有的文本视图都可以这样工作。当调用bindview方法时,我做了一个测试并打印了它,它在alertdialog(滚动时)中被重复调用,但在一个对话框中没有时(即使滚动时)会被多次调用。如果适配器是相同的,那么它的工作应该是类似的。也许不同的数据?
    LinearLayout ll = (LinearLayout) view.findViewById(R.id.item_datetime_holder);
    if (cat.equalsIgnoreCase("trip notes")) {   
        ll.setVisibility(View.INVISIBLE);
    } else {
        ll.setVisibility(View.VISIBLE);
    }