保存listview中项目的可见性

时间:2014-01-30 10:27:30

标签: android listview android-listview

我的列表视图中存在问题,当用户点击项目时,该项目变为不可见,

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

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();}

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

当您离开listview时,它会被销毁,并在您导航回listview时重新创建。由于您在创建期间不处理可见性状态检查,因此它总是最终可见。 您可能需要扩展listadapter并覆盖getView方法。

答案 2 :(得分:1)

您可以通过调用

获取项目可见性
View.getVisibility();

并将其与

进行比较
View.INVISIBLE or View.VISIBLE

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

View.setVisibility(View.VISIBLE)

View.setVisibility(View.INVISIBLE)