簡體   English   中英

如何在ActionBarSherlock中使用ListView?

[英]How to use ListView with ActionBarSherlock?

我需要為我的項目使用ActionBarSherlock,但是使用ListView時出現錯誤。 我知道我需要擴展到ListActivity,但是我敢肯定還有另一種方法。 以下是我的課程。

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


}

如果需要ListView,則可能應該擴展SherlockListFragment,而不僅僅是SherlockFragment。 (或者,您需要顯式地找到列表並設置其listadapter,而不是嘗試在包含的片段上設置listadapter。)

XML中的ListView必須具有@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>

然后是這樣的:

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

從“擴展SherlockFragment”更改為“擴展SherlockListFragment”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM