【问题标题】:save the visibility of an item in listview在列表视图中保存项目的可见性
【发布时间】:2014-01-30 10:27:29
【问题描述】:

我的列表视图中有一个问题,当用户单击 item 时,该 item 变得不可见,

但是当他返回列表视图时,该项目再次可见,我尝试了指令

adapter.notifyDataSetChanged() 但它不起作用;如何保存项目的可见性

列表视图??这是我的问题...感谢您的帮助

我的代码:

         private void populateListViewFromDB() {
    Cursor cursor = db.getAllRecords();
    startManagingCursor(cursor);
    String[] databaseColumnNames = new String[] { DBAdapter.col_Region };
    int[] toViewIDs = new int[] { android.R.id.text1, android.R.id.text2 };

    SimpleCursorAdapter myCursordapter = new SimpleCursorAdapter(this,
            android.R.layout.simple_expandable_list_item_1, cursor,
            databaseColumnNames, toViewIDs, FLAG_REGISTER_CONTENT_OBSERVER);

    final ListView list = (ListView) findViewById(android.R.id.list);
    list.setAdapter(myCursordapter);

当我想让一个项目不可见时,这里是我的代码:

   list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        public void onItemClick(final AdapterView<?> arg0, View arg1,
                final int position, long arg3) {
                ((TextView)arg1).setVisibility(8);
                adapter.notifyDataSetChanged();}

【问题讨论】:

    标签: android listview android-listview


    【解决方案1】:

    这是因为适配器在您滚动离开后重新创建项目的视图,然后滚动回初始位置。 您可能必须编写自己的适配器,跟踪不可见 Views 的位置,并在 getView() 中相应地设置可见性。

    【讨论】:

    【解决方案2】:

    当您离开列表视图时,它会被破坏,当您回到列表视图时会重新创建。由于您在创建期间没有处理可见性状态检查,因此它将始终可见。 您可能需要扩展 listadapter 并覆盖 getView 方法。

    【讨论】:

    • 感谢您的想法,所以每次都会创建列表,所以所有项目都将可见,我该如何覆盖 getView 方法??
    • 1.您将需要为列表对象而不是字符串创建一个定义类 例如:class ListItem { string text1; string text2; boolean isText1Visible; } 2. 编写一个可以使用自定义列表项列表的适配器 3. 覆盖适配器的 getView 方法并根据财产。 4. OnClick 根据需要更新 listItem 属性。
    【解决方案3】:

    您可以通过调用获得项目可见性

    View.getVisibility();
    

    比较一下

    View.INVISIBLE or View.VISIBLE
    

    然后根据您的条件设置可见性,例如

    View.setVisibility(View.VISIBLE)
    

    View.setVisibility(View.INVISIBLE)
    

    【讨论】:

    • 这就是我要找的,但我应该把条件放在我的代码中的什么地方?谢谢
    • OnItemClickListener of listview
    • 我正在尝试应用您的解决方案,但我不知道从哪里开始,所以我应该在 OnItemClickListener 中尝试添加条件是否可见项目,但这不会被考虑,因为列表会再次重新创建??那么是什么让这些条件产生影响??
    猜你喜欢
    • 1970-01-01
    • 2013-04-17
    • 2013-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-16
    相关资源
    最近更新 更多