如何在Fragment(Android)中设置自定义ListView?

安舒曼·达蒙(Anshuman Dhamoon)

我已经设置了3个滑动视图选项卡/屏幕,在其中一个窗口中我想显示一个自定义ListView。由于某些原因,当我到达该特定选项卡时,该应用程序崩溃。我的代码如下:

swipeview的代码段

public Fragment getItem(int position) {


        switch (position) {
        case 0:
            return new SOA();
        case 1:
            return new tv();
        case 2:
            return new Onstage();

        }

        return null; }

Onstage()的代码---我的类来设置自定义列表视图

public class Onstage extends Fragment {

ListView lv;
Context context;
Adapter adapter;

ArrayList prgmName;
public static String [] prgmNameList={"Arkham","Vendetta","Corleone"};
public static String [] prgmNameList2={"Arkham","Vendetta","Corleone};

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.scoreboard, container, false);

    lv=(ListView) getView().findViewById(R.id.onstagelist);
    adapter=new Adapter(this, prgmNameList, prgmNameList2);
    lv.setAdapter(adapter);
    return rootView;


}}

我不能将其扩展到ListFragment,因为swipeview仅接受片段(我认为)

scoreboard.xml

<RelativeLayout 
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:background="#000000"
tools:context="com.example.second.Onstage" >


<ListView
    android:id="@+id/onstagelist"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
</ListView>

</RelativeLayout>

我的自定义适配器

public class Adapter extends BaseAdapter {

String [] name;
String [] name2;
Context context;
int [] imgid;
private static LayoutInflater inf=null;

public Adapter(Onstage onstage, String[] prgmNameList, String[] prgmNameList2) {
    // TODO Auto-generated constructor stub
    name=prgmNameList;
    this.context=context;
    name2=prgmNameList2;
     inf = ( LayoutInflater )context.
             getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}



@Override
public int getCount() {
    // TODO Auto-generated method stub
    return name.length;
}


@Override
public Object getItem(int position) {
    // TODO Auto-generated method stub
    return position;
}

@Override
public long getItemId(int position) {
    // TODO Auto-generated method stub
    return position;
}


public class Holder
{
    TextView tv1,tv2;

}




@Override
public View getView(int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub


    Holder holder=new Holder();
    View rowview;
    rowview=inf.inflate(R.layout.scoreboard_layout, null);
    holder.tv1=(TextView) rowview.findViewById(R.id.eosname);
    holder.tv2=(TextView) rowview.findViewById(R.id.eosvenue);
  ``holder.tv1.setText(name[position]);
    holder.tv2.setText(name2[position]);
    return rowview;

}}

和scoreboard_layout.xml

<LinearLayout 
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000000"
android:orientation="vertical" >

 <TextView
    android:id="@+id/eosname"
    android:layout_gravity="center"
    android:fontFamily="sans-serif-light"
    android:textSize="20sp"
    android:textColor="#FFFFFF"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="TextView" />

<TextView
    android:id="@+id/eosvenue"
    android:layout_gravity="center"
    android:fontFamily="sans-serif-light"
    android:textSize="20sp"
    android:textColor="#FFFFFF"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="TextView" />


</LinearLayout>

Logcat如下:

02-22 10:46:04.316: D/AndroidRuntime(17969): Shutting down VM
02-22 10:46:04.326: E/AndroidRuntime(17969): FATAL EXCEPTION: main
02-22 10:46:04.326: E/AndroidRuntime(17969): Process: com.example.second, PID: 17969
02-22 10:46:04.326: E/AndroidRuntime(17969): java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService(java.lang.String)' on a null object reference
02-22 10:46:04.326: E/AndroidRuntime(17969):    at com.example.second.Adapter.<init>(Adapter.java:27)
02-22 10:46:04.326: E/AndroidRuntime(17969):    at com.example.second.Onstage.onCreateView(Onstage.java:32)
02-22 10:46:04.326: E/AndroidRuntime(17969):    at android.support.v4.app.Fragment.performCreateView(Fragment.java:1786)
02-22 10:46:04.326: E/AndroidRuntime(17969):    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:947)
02-22 10:46:04.326: E/AndroidRuntime(17969):    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1126)
02-22 10:46:04.326: E/AndroidRuntime(17969):    at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:739)
02-22 10:46:04.326: E/AndroidRuntime(17969):    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1489)
02-22 10:46:04.326: E/AndroidRuntime(17969):    at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:486)
02-22 10:46:04.326: E/AndroidRuntime(17969):    at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
02-22 10:46:04.326: E/AndroidRuntime(17969):    at android.support.v4.view.ViewPager.populate(ViewPager.java:1073)
02-22 10:46:04.326: E/AndroidRuntime(17969):    at android.support.v4.view.ViewPager.populate(ViewPager.java:919)
02-22 10:46:04.326: E/AndroidRuntime(17969):    at android.support.v4.view.ViewPager$3.run(ViewPager.java:249)
02-22 10:46:04.326: E/AndroidRuntime(17969):    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
02-22 10:46:04.326: E/AndroidRuntime(17969):    at android.view.Choreographer.doCallbacks(Choreographer.java:580)
02-22 10:46:04.326: E/AndroidRuntime(17969):    at android.view.Choreographer.doFrame(Choreographer.java:549)
02-22 10:46:04.326: E/AndroidRuntime(17969):    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
02-22 10:46:04.326: E/AndroidRuntime(17969):    at android.os.Handler.handleCallback(Handler.java:739)
02-22 10:46:04.326: E/AndroidRuntime(17969):    at android.os.Handler.dispatchMessage(Handler.java:95)
02-22 10:46:04.326: E/AndroidRuntime(17969):    at android.os.Looper.loop(Looper.java:135)
02-22 10:46:04.326: E/AndroidRuntime(17969):    at android.app.ActivityThread.main(ActivityThread.java:5255)
02-22 10:46:04.326: E/AndroidRuntime(17969):    at java.lang.reflect.Method.invoke(Native Method)
02-22 10:46:04.326: E/AndroidRuntime(17969):    at java.lang.reflect.Method.invoke(Method.java:372)
02-22 10:46:04.326: E/AndroidRuntime(17969):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:898)
02-22 10:46:04.326: E/AndroidRuntime(17969):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693)
02-22 10:46:08.991: I/Process(17969): Sending signal. PID: 17969 SIG: 9
S

1.onCreateView您的中Onstage,替换

lv=(ListView) getView().findViewById(R.id.onstagelist);

lv=(ListView) rootView.findViewById(R.id.onstagelist);

原因是getView()onCreateView()返回之前无法调用,因为Viewreturn bygetView()首先是生成的onCreateView()

2.由于您的context引用为空,因此发生了您发布的第二个错误Adapter的构造函数

public Adapter(Onstage onstage, String[] prgmNameList, String[] prgmNameList2) {...}

没有Context参数,因此该行this.context = context无法初始化该context字段。Adapter构造函数定义

public Adapter(Onstage onstage, String[] prgmNameList, String[] prgmNameList2, Context context) {...}

并将有效的context实例传递给它(它应该是的实例Activity,因此可以通过调用来获取它getActivity())。

3.您可以制作Onstage一个ListFragment,它将起作用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Android中创建自定义ListView?

来自分类Dev

如何在android中自定义ListView的高度?

来自分类Dev

Android如何在画布中设置自定义字体?

来自分类Dev

如何在 JavaFX 中的 ListView 中设置自定义控件的样式

来自分类Dev

如何在Android中设置自定义格式设置日期

来自分类Dev

如何在Android中的自定义ListView中实现搜索?

来自分类Dev

Android如何在我的自定义Listview中实现AsyncTask

来自分类Dev

如何在Android的自定义ListView中传递不同的Intent Extras?

来自分类Dev

如何在Android Studio中为Android项目设置自定义主题?

来自分类Dev

如何在Android中以编程方式在圆角的imageview中设置自定义背景色

来自分类Dev

从 Fragment 中的自定义 ListAdapter 和 ListView 设置位图 Imageview

来自分类常见问题

如何在排球请求中设置自定义标题

来自分类Dev

如何在图表中设置自定义填充颜色

来自分类Dev

如何在自定义WebViewPage中设置属性?

来自分类Dev

如何在Maven中设置JDK的自定义版本?

来自分类Dev

如何在CreateJs中设置自定义光标?

来自分类Dev

如何在JCalendar中设置自定义星期开始?

来自分类Dev

如何在自定义通知textview中设置值

来自分类Dev

如何在HTML中设置自定义tabindex

来自分类Dev

如何在Helmchart中设置自定义发布名称

来自分类Dev

如何在SwiftUI中设置自定义环境键?

来自分类Dev

如何在自定义HttpMessageHandler中设置属性?

来自分类Dev

如何在Flutter中设置自定义FontWeight值

来自分类Dev

如何在Java中设置自定义光标?

来自分类Dev

如何在自定义WebViewPage中设置属性?

来自分类Dev

如何在CreateJs中设置自定义光标?

来自分类Dev

如何在Ubuntu中设置自定义时间?

来自分类Dev

如何在自定义通知textview中设置值

来自分类Dev

如何在 Leaflet 中创建自定义设置控件

Related 相关文章

  1. 1

    如何在Android中创建自定义ListView?

  2. 2

    如何在android中自定义ListView的高度?

  3. 3

    Android如何在画布中设置自定义字体?

  4. 4

    如何在 JavaFX 中的 ListView 中设置自定义控件的样式

  5. 5

    如何在Android中设置自定义格式设置日期

  6. 6

    如何在Android中的自定义ListView中实现搜索?

  7. 7

    Android如何在我的自定义Listview中实现AsyncTask

  8. 8

    如何在Android的自定义ListView中传递不同的Intent Extras?

  9. 9

    如何在Android Studio中为Android项目设置自定义主题?

  10. 10

    如何在Android中以编程方式在圆角的imageview中设置自定义背景色

  11. 11

    从 Fragment 中的自定义 ListAdapter 和 ListView 设置位图 Imageview

  12. 12

    如何在排球请求中设置自定义标题

  13. 13

    如何在图表中设置自定义填充颜色

  14. 14

    如何在自定义WebViewPage中设置属性?

  15. 15

    如何在Maven中设置JDK的自定义版本?

  16. 16

    如何在CreateJs中设置自定义光标?

  17. 17

    如何在JCalendar中设置自定义星期开始?

  18. 18

    如何在自定义通知textview中设置值

  19. 19

    如何在HTML中设置自定义tabindex

  20. 20

    如何在Helmchart中设置自定义发布名称

  21. 21

    如何在SwiftUI中设置自定义环境键?

  22. 22

    如何在自定义HttpMessageHandler中设置属性?

  23. 23

    如何在Flutter中设置自定义FontWeight值

  24. 24

    如何在Java中设置自定义光标?

  25. 25

    如何在自定义WebViewPage中设置属性?

  26. 26

    如何在CreateJs中设置自定义光标?

  27. 27

    如何在Ubuntu中设置自定义时间?

  28. 28

    如何在自定义通知textview中设置值

  29. 29

    如何在 Leaflet 中创建自定义设置控件

热门标签

归档