2013-07-28 31 views
0

我需要爲我的項目使用ActionBarSherlock,但在使用ListView時出現錯誤。我知道我需要擴展到ListActivity,但我相信還有另一種解決方法。 以下是我的課程。如何將ListView與ActionBarSherlock一起使用?

public class ViewPagerAdapter extends FragmentPagerAdapter { 

// Declare the number of ViewPager pages 
final int PAGE_COUNT = 3; 

public ViewPagerAdapter(FragmentManager fm) { 
    super(fm); 
} 

@Override 
public Fragment getItem(int arg0) { 
    switch (arg0) { 

    // Open Maths.java 
    case 0: 
     MathActivity maths = new MathActivity(); 
     return maths; 

     // Open Units.java 
    case 1: 
     UnitsActivity units = new UnitsActivity(); 
     return units; 

     // Open Physics.java 
    case 2: 
     PhysicsActivity physics = new PhysicsActivity(); 
     return physics; 

    } 
    return null; 
} 

下面是我的MathActivity類,它擴展了SherlockFragment。

public class MathActivity extends SherlockFragment { 


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

    String[] mathList = new String[] {"Item 1", "Item 2", "Item 3", "Item 4"}; 
    setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mathList)); 


} 

回答

3

如果你想要一個ListView,你應該擴展SherlockListFragment,而不僅僅是SherlockFragment。 (或者,您需要明確地找到您的列表並設置它的列表適配器,而不是嘗試和設置包含片段上的列表適配器。)

您的ListView在您的XML中需要具有@android:id/list的ID,例如。 mathlist.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    > 
    <ListView android:id="@android:id/list" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
     /> 
</LinearLayout> 

然後是這樣的:從 「擴展SherlockFragment」 到 「擴展SherlockListFragment」

public class MathActivity extends SherlockListFragment implements OnItemClickListener 
{ 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) 
    { 
    View view = inflater.inflate(R.layout.mathlist, null); 
    String[] mathList = new String[] {"Item 1", "Item 2", "Item 3", "Item 4"}; 
    setListAdapter(new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, mathList)); 
    return view; 
    } 

    @Override 
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) 
    { 
    // handle listview item clicks in here  
    } 

    // Don't let items be clicked until the activity has finished drawing everything: 
    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    getListView().setOnItemClickListener(this); 
    } 
} 
1

變化。

+0

然後顯示錯誤。 「構造函數ArrayAdapter (MathActivity,int,String [])未定義」 – ivesingh

+0

將「this」替換爲「getActivity()」? –

+0

它仍然不起作用。 setListAdapter未被識別,並且也是OnListItemClick()方法中的錯誤。 – ivesingh

相關問題