如何在android中以片段形式填充自定义列表?

如何在android中以片段形式填充自定义列表?,android,android-fragments,android-studio,Android,Android Fragments,Android Studio,我有一个片段,我想在其中创建一个自定义列表视图,但当我将参数发送到适配器时,它给了我一个错误 这是我的代码片段 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fragment_list, container, false); TextVi

我有一个片段,我想在其中创建一个自定义列表视图,但当我将参数发送到适配器时,它给了我一个错误

这是我的代码片段

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.fragment_list, container, false);

    TextView tv = (TextView) v.findViewById(R.id.textView1);

    CustomAdapter arrayAdapter = new CustomAdapter(getActivity(), R.layout.search_catagory_list, prgmImages, prgmNameList);
    lv = (ListView) v.findViewById(R.id.listView);

    lv.setAdapter(arrayAdapter);
    return v;
}
这是我的MainHome.java

package com.example.yasee.bitescene.Fragments;

import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import android.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.TextView;

import com.example.yasee.bitescene.R;
import com.example.yasee.bitescene.adapter.CustomAdapter;

import java.util.ArrayList;

public class MainHome extends Fragment {
    private static final String ARG_PARAM1 = "param1";
    private static final String ARG_PARAM2 = "param2";
    private String mParam1;
    private String mParam2;

ListView lv;
public static int [] prgmImages={R.drawable.one,R.drawable.two,R.drawable.three,R.drawable.four,R.drawable.five};
public static String [] prgmNameList={"TRULY RANDOM","TEX MEX","BBQ","BRUNCH","SUSHI"};

private OnFragmentInteractionListener mListener;

public MainHome() {

}

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

    View v = inflater.inflate(R.layout.fragment_list, container, false);

    TextView tv = (TextView) v.findViewById(R.id.textView1);

    CustomAdapter arrayAdapter = new CustomAdapter(getActivity(), R.layout.search_catagory_list, prgmImages, prgmNameList);
    lv = (ListView) v.findViewById(R.id.listView);

    lv.setAdapter(arrayAdapter);
    return v;
}

public static MainHome newInstance(String param1, String param2) {
    MainHome fragment = new MainHome();
    Bundle args = new Bundle();
    args.putString(ARG_PARAM1, param1);
    args.putString(ARG_PARAM2, param2);
    fragment.setArguments(args);
    return fragment;
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (getArguments() != null) {
        mParam1 = getArguments().getString(ARG_PARAM1);
        mParam2 = getArguments().getString(ARG_PARAM2);
    }
}


public void onButtonPressed(Uri uri) {
    if (mListener != null) {
        mListener.onFragmentInteraction(uri);
    }
}

@Override
public void onAttach(Context context) {
    super.onAttach(context);
    if (context instanceof OnFragmentInteractionListener) {
        mListener = (OnFragmentInteractionListener) context;
    } else {
        throw new RuntimeException(context.toString()
                + " must implement OnFragmentInteractionListener");
    }
}

@Override
public void onDetach() {
    super.onDetach();
    mListener = null;
}

/**
 * This interface must be implemented by activities that contain this
 * fragment to allow an interaction in this fragment to be communicated
 * to the activity and potentially other fragments contained in that
 * activity.
 * <p>
 * See the Android Training lesson <a href=
 * "http://developer.android.com/training/basics/fragments/communicating.html"
 * >Communicating with Other Fragments</a> for more information.
 */
public interface OnFragmentInteractionListener {
    // TODO: Update argument type and name
    void onFragmentInteraction(Uri uri);
}
}
我的错误是

06-13 07:31:00.399 3569-3569/com.example.yasee.bitescene E/AndroidRuntime:致命异常:main 进程:com.example.yasee.bitescene,PID:3569 java.lang.RuntimeException:无法启动活动组件信息{com.example.yasee.bitescene/com.example.yasee.bitescene.Search}:java.lang.NullPointerException 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)上 位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 在android.app.ActivityThread.access$800(ActivityThread.java:135) 在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)上 位于android.os.Handler.dispatchMessage(Handler.java:102) 位于android.os.Looper.loop(Looper.java:136) 位于android.app.ActivityThread.main(ActivityThread.java:5017) 位于java.lang.reflect.Method.Invokenactive(本机方法) 位于java.lang.reflect.Method.invoke(Method.java:515) 在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)上 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 在dalvik.system.NativeStart.main(本机方法) 原因:java.lang.NullPointerException 位于com.example.yasee.bitescene.Fragments.MainHome.onCreateView(MainHome.java:44) 位于android.app.Fragment.performCreateView(Fragment.java:1700) 在android.app.FragmentManagerImpl.moveToState(FragmentManager.java:890) 位于android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062) 运行(BackStackRecord.java:684) 位于android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1447) 位于android.app.Activity.performStart(Activity.java:5240) 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2168)上 位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 在android.app.ActivityThread.access$800(ActivityThread.java:135) 在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)上 位于android.os.Handler.dispatchMessage(Handler.java:102) 位于android.os.Looper.loop(Looper.java:136) 位于android.app.ActivityThread.main(ActivityThread.java:5017) 位于java.lang.reflect.Method.Invokenactive(本机方法) 位于java.lang.reflect.Method.invoke(Method.java:515) 在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)上 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 在dalvik.system.NativeStart.main(本机方法)


首先在片段中创建一个新方法并像膨胀一样膨胀

LayoutInflater inflater = (LayoutInflater) mActivity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View inflatedView2 = inflater.inflate(R.layout.activity_table_on_off_data, null);

create a new layout with listview and call it here 

TableReport1 = (ListView) inflatedView2.findViewById(R.id.dataonofflister);
并使用适配器,如

tableReportofOnOffData = new TableReportofOnOffData(mActivity.getApplicationContext(), listData);
                TableReport1.setAdapter(null);
                TableReport1.setAdapter(tableReportofOnOffData);
零碎

@


lv
似乎为空,导致出现
NullPointerException

确保
ListView
id
实际设置为
ListView
,如下行所示。还要确保它在布局
fragment\u列表中

lv = (ListView) v.findViewById(R.id.listView);

错误消息是什么?指向代码以查看消息并共享它。好吧,当运行我的应用程序it show时,我对android太陌生了。。。不幸的是,我停了下来,没关系。但是你应该
Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
   TableDisplayconditionView(date,getapplicationcontext());
   }

 create a new method outside of createview with parameters,

private void TableDisplayEventData(String date, Context context) {



    LayoutInflater inflater = (LayoutInflater) mActivity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View inflatedView2 = inflater.inflate(R.layout.activity_event_details_data, null);
        Gallery.removeAllViews();
        Gallery.addView(inflatedView2);

        TableReport2 = (ListView) inflatedView2.findViewById(R.id.dataonofflister);

 tableReportofOnOffData = new TableReportofOnOffData(mActivity.getApplicationContext(), listData);
                TableReport1.setAdapter(null);
                TableReport1.setAdapter(tableReportofOnOffData);
}

The adapter looks like,

class TableReportofOnOffData extends BaseAdapter {

  @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view = convertView;

    if (view == null) {
        view = lInflater.inflate(R.layout.activity_table_on_off_data_text, parent, false);
    }

    ListerOnOffData p = getProduct(position);
    ListerOnOffData p2 = getProduct(position + 1);

    ((TextView) view.findViewById(R.id.date)).setText(p.getDate());
    ((TextView) view.findViewById(R.id.duration)).setText(p.getDuration());
    ((TextView) view.findViewById(R.id.powerfail)).setText(p.getPowerFail());
    ((TextView) view.findViewById(R.id.kwh)).setText(p.getKwh());

    return view;
}

}
lv = (ListView) v.findViewById(R.id.listView);