2013-07-28 2 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; 
} 

다음은 SherlockFragment를 확장하는 MathActivity 클래스입니다.

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를 원한다면 SherlockFragment뿐 아니라 SherlockListFragment를 확장해야합니다. (또는 명시 적으로 목록을 찾고 해당 Listadapter를 설정해야합니다. 포함 된 단편에서 listadapter를 설정하지 말아야합니다.)

XML의 ListView는 @android : id/list의 ID가 있어야합니다. 에 "SherlockListFragment이 확장" "SherlockFragment를 확장"에서

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

변경 :이 같은

<?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> 

그리고 뭔가를 mathlist.xml.

+0

그러면 오류가 표시됩니다. "생성자 ArrayAdapter (MathActivity, int, String [])이 정의되지 않았습니다." – ivesingh

+0

"this"를 "getActivity()"로 바꿉니 까? –

+0

여전히 작동하지 않습니다. setListAdapter가 인식되지 않고 OnListItemClick() 메서드에서 오류가 발생했습니다. – ivesingh

관련 문제