我的列表视图中存在问题,当用户点击项目时,该项目变为不可见,
但当他返回列表视图时,该项目再次可见,我尝试了指令
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();}
答案 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)