2011-08-09 20 views
0

我有一个ListView与ViewSwitcher项目。我们的目标是点击一个列表项来切换ViewSwitcher视图。轻击按预期工作,但从轻敲项目滚动,然后返回有时会更改哪些项目正在显示ViewSwitcher的第二个视图。ViewSwitcher作为ListView项目 - 如何在正确的ViewSwitcher项目上调用.showNext()?

这里是我的ListView项布局,ViewSwitcher是@ + ID /详细信息:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android = "http://schemas.android.com/apk/res/android" 
    android:layout_width = "fill_parent" 
    android:layout_height = "wrap_content" > 

    <ViewSwitcher 
     android:id     = "@+id/details" 
     android:layout_width  = "fill_parent" 
     android:layout_height  = "fill_parent" 
     android:measureAllChildren = "false" > 

     <!-- two views I want to switch between are here --> 

    </ViewSwitcher> 
</RelativeLayout> 

我的活动,发现@ ID /细节,并呼吁.showNext()。

public class MyActivity extends ListActivity { 
    private MySQLiteOpenHelper data; 
    private SimpleCursorAdapter adapter; 
    private Cursor cursor; 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     String[] FROM = { "_id", "_id", "name", "name" }; 
     int[] TO = { R.id.my_list_id, R.id.my_list_id2, R.id.my_list_name, R.id.my_list_name_details }; 

     data = new MySQLiteOpenHelper(this); 
     cursor = data.myList(); 
     startManagingCursor(cursor); 

     adapter = new SimpleCursorAdapter(this, R.layout.list_item, cursor, FROM, TO); 
     setListAdapter(adapter); 

     ListView list = getListView(); 
     list.setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(AdapterView<?> adapter, View view, int position, long id) { 
       ViewSwitcher item = (ViewSwitcher) view.findViewById(R.id.details); 
       item.showNext(); 
      } 
     }); 
    } 
} 

认为我的问题可能是@ ID /详细信息实际上并没有独特的,滚动时如此不确定的行为发生。

如果是这种情况,那么我该如何为每个ViewSwitcher分配一个唯一的ID或找到正确的ViewSwitcher来调用.showNext()?

+0

的ArrayList?你觉得它没有改变? –

+0

是的,当我向后滚动时,它不被切换,并且一个*不同的*项被切换。 – mjwhitt

+0

示例:列表中的10项,点击#9,向上滚动,点击#2(看不到#9),向下滚动,#9被夹在中间,#10 *被*切换。向上滚动并再次点击#2,向下滚动,并且#9被切换。奇怪的不切换/切换似乎只发生在ListView中视图之外的ViewSwitchers上。 – mjwhitt

回答

1

你的错误代码是在

// Cursor/Adapter code here to populate list from SQLite DB. 

请张贴代码

但是这里有一些提示

  1. 扩展ArrayAdapter
  2. 添加一个ArrayList里面的所有物品
  3. 请将此ArrayList每个ViewSwitcher

一个简单的方法的状态将是使该ArrayList ViewSwitchers当你卷回切换ViewSwitcher

+0

我编辑并添加了一些代码。 data.myList()返回一个从sqlite数据库中提取数据的Cursor。我的问题是使用SimpleCursorAdapter吗? – mjwhitt

+1

我扩展了一个适配器并保持ViewSwitchers的状态,但它仍然显示奇怪的行为。此时,我只是决定手动显示两个视图中的一个,而不是试图让ViewSwitcher运行起来,而且效果很好。感谢您指点我正确的方向。 – mjwhitt