Java 动态添加listitem时获取NullPointerException-android

Java 动态添加listitem时获取NullPointerException-android,java,android,nullpointerexception,Java,Android,Nullpointerexception,我正在使用BaseAdapter创建列表视图,我想在按下add按钮时动态添加列表项。但是现在我得到了这个空指针异常 07-02 06:40:41.650: E/AndroidRuntime(1940): FATAL EXCEPTION: main 07-02 06:40:41.650: E/AndroidRuntime(1940): java.lang.NullPointerException 07-02 06:40:41.650: E/AndroidRuntime(1940): at

我正在使用BaseAdapter创建列表视图,我想在按下add按钮时动态添加列表项。但是现在我得到了这个空指针异常

07-02 06:40:41.650: E/AndroidRuntime(1940): FATAL EXCEPTION: main
07-02 06:40:41.650: E/AndroidRuntime(1940): java.lang.NullPointerException
07-02 06:40:41.650: E/AndroidRuntime(1940):     at com.ui.activities.AddHorseCompetitionResult$1.onClick(AddHorseCompetitionResult.java:61)
07-02 06:40:41.650: E/AndroidRuntime(1940):     at android.view.View.performClick(View.java:4204)
07-02 06:40:41.650: E/AndroidRuntime(1940):     at android.view.View$PerformClick.run(View.java:17355)
07-02 06:40:41.650: E/AndroidRuntime(1940):     at android.os.Handler.handleCallback(Handler.java:725)
07-02 06:40:41.650: E/AndroidRuntime(1940):     at android.os.Handler.dispatchMessage(Handler.java:92)
07-02 06:40:41.650: E/AndroidRuntime(1940):     at android.os.Looper.loop(Looper.java:137)
07-02 06:40:41.650: E/AndroidRuntime(1940):     at android.app.ActivityThread.main(ActivityThread.java:5041)
07-02 06:40:41.650: E/AndroidRuntime(1940):     at java.lang.reflect.Method.invokeNative(Native Method)
07-02 06:40:41.650: E/AndroidRuntime(1940):     at java.lang.reflect.Method.invoke(Method.java:511)
07-02 06:40:41.650: E/AndroidRuntime(1940):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
07-02 06:40:41.650: E/AndroidRuntime(1940):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
07-02 06:40:41.650: E/AndroidRuntime(1940):     at dalvik.system.NativeStart.main(Native Method)
这是我的java类

public class AddCompetitionResult extends Fragment {

    private CompetitionResultListAdapter competitionResultListAdapter;
    private DataManager datamanager;
    ArrayList<Result> result;
    ListView listView;
    private Horse horse;
    private Button addResults;
    int clickCounter=0;
    int resultId = 1;

    public AddHorseCompetitionResult(Horse horse) {
        this.horse = horse;
    }

    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.add_horse_competition_result,
                null);

        addResults = (Button) view.findViewById(R.id.btn_add_competition_result);

        listView = (ListView) view.findViewById(R.id.data_list);
        // result = datamanager.create(getActivity());

        competitionResultListAdapter = new CompetitionResultListAdapter(result, getActivity());

        View footerView = ((LayoutInflater) getActivity().getSystemService(
                Context.LAYOUT_INFLATER_SERVICE)).inflate(
                R.layout.competition_result_listview_footer, null, false);

        listView.addFooterView(footerView);

        listView.setAdapter(competitionResultListAdapter);

        addResults.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                result.add(new Result("resultId"));
                competitionResultListAdapter.notifyDataSetChanged();
                resultId++;

            }
        });

        listView.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                if (competitionResultListAdapter.getCount() == position) {
                    MainActivity mainActivity = MainActivity.getInstance();
                    mainActivity.setFragment(new AddHorseDetailedInfo(horse),
                            "Add horse more info");
                    // datamanager.createResult(result);

                } else {
                    // ContactGroup cg = (ContactGroup)
                    // competitionResultListAdapter.getItem(position);
                    // MainActivity mainActivity = MainActivity.getInstance();
                    // mainActivity.setFragment(new
                    // ContactListView(cg.getGroupId()), "contacts");
                }
            }

        });

        return view;

    }
}
公共类AddCompetitionResult扩展片段{
私人竞赛结果适应者竞赛结果适应者;
专用数据管理器数据管理器;
阵列列表结果;
列表视图列表视图;
私家马;
私有按钮添加结果;
int clickCounter=0;
int-resultId=1;
公开赛马比赛结果(马匹){
这匹马=马;
}
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图=充气机。充气(R.layout.add\u horse\u competition\u result,
无效);
addResults=(按钮)view.findViewById(R.id.btn\u添加\u竞争\u结果);
listView=(listView)view.findViewById(R.id.data\u列表);
//结果=datamanager.create(getActivity());
competitionResultListAdapter=新的competitionResultListAdapter(结果,getActivity());
视图页脚视图=((LayoutFlater)getActivity().getSystemService(
上下文。布局(充气机(服务))。充气(
R.layout.competition\u result\u listview\u footer,null,false);
addFooterView(footerView);
setAdapter(competitionResultListAdapter);
addResults.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
结果。添加(新结果(“结果”);
competitionResultListAdapter.notifyDataSetChanged();
resultId++;
}
});
setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
if(competitionResultListAdapter.getCount()==位置){
MainActivity MainActivity=MainActivity.getInstance();
mainActivity.setFragment(新的AddHorseDetailedInfo(马),
“添加更多信息”);
//datamanager.createResult(结果);
}否则{
//ContactGroup cg=(ContactGroup)
//competitionResultListAdapter.getItem(位置);
//MainActivity MainActivity=MainActivity.getInstance();
//mainActivity.setFragment(新
//ContactListView(cg.getGroupId(),“contacts”);
}
}
});
返回视图;
}
}
适配器

public class CompetitionResultListAdapter extends BaseAdapter{

    private Activity activity;
    private ArrayList<Result> result;
    DataManager datamanager;

    public CompetitionResultListAdapter( ArrayList<Result> result, Activity activity){
        this.result = result;
        this.activity = activity;
    }

    @Override
    public int getCount() {
        return result!=null ? result.size() : 0;
    }

    @Override
    public Object getItem(int position) {
        return result.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if(convertView==null){
            // inflate the layout
            LayoutInflater inflater = activity.getLayoutInflater();
            convertView = inflater.inflate(R.layout.list_item_competition_result, parent, false);
        }
        EditText listItemDate = (EditText) convertView.findViewById(R.id.date);
        EditText listItemPlace = (EditText) convertView.findViewById(R.id.place);
        EditText listItemComment = (EditText) convertView.findViewById(R.id.comment);
        result.get(position).setDate(listItemDate.getText().toString());
        result.get(position).setPlace(listItemPlace.getText().toString());
        result.get(position).setComment(listItemComment.getText().toString());


        return convertView;
    }

    public void refreshResultList(ArrayList<Result> result){
        this.result = result;
        notifyDataSetChanged();

    }

}
公共类CompetitionResultListAdapter扩展BaseAdapter{
私人活动;
私有数组列表结果;
数据管理器数据管理器;
公共竞赛结果列表适配器(ArrayList结果、活动){
this.result=结果;
这个。活动=活动;
}
@凌驾
public int getCount(){
返回结果!=null?结果.size():0;
}
@凌驾
公共对象getItem(int位置){
返回result.get(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
if(convertView==null){
//使布局膨胀
LayoutInflater充气器=活动。getLayoutInflater();
convertView=充气机。充气(R.layout.list\u item\u competition\u result,parent,false);
}
EditText listItemDate=(EditText)convertView.findViewById(R.id.date);
EditText listItemPlace=(EditText)convertView.findViewById(R.id.place);
EditText listItemComment=(EditText)convertView.findViewById(R.id.comment);
result.get(position.setDate(listItemDate.getText().toString());
result.get(position.setPlace(listItemPlace.getText().toString());
result.get(position.setComment(listItemComment.getText().toString());
返回视图;
}
公共无效刷新结果列表(ArrayList结果){
this.result=结果;
notifyDataSetChanged();
}
}

看起来好像
结果
从未在以下行中初始化:

result.add(new Result("resultId"));
调用。

您的
结果数组列表
未初始化。所以在构造函数中初始化它-

公共类AddCompetitionResult扩展片段{
私人竞赛结果适应者竞赛结果适应者;
专用数据管理器数据管理器;
阵列列表结果;
列表视图列表视图;
私家马;
私有按钮添加结果;
int clickCounter=0;
int-resultId=1;
公开竞赛结果(ArrayList结果,
(马){
这匹马=马;
/*如果需要,请在此处初始化
将值传递到某个位置(1)*/
this.result=结果;
}
创建视图上的公共视图(更平坦的充气机,
视图组容器,捆绑包savedInstanceState){
视图=充气机。充气(右布局。
添加\u马\u比赛\u结果,空);
/*尚未将值传递给构造函数*/
/*然后在任何地方这样做(2)*/
结果=新的ArrayList();
结果。添加(新结果(“结果”);
返回视图;
}
}
注意:

(1) 初始化的方式1是从其他地方将此值传递给此构造函数

(2) 否则,您可以按2-


ArrayList结果=新建ArrayList()

在使用arraylist之前初始化它

ArrayList<Result> result  = new ArrayList<Result>();
ArrayList结果=新建ArrayList();

AddHorseCompetitionResult.java中的第61行是什么?您在哪里初始化了
result
?看起来结果数组是problem@VedPrakash第61行是result.add(新结果
ArrayList<Result> result  = new ArrayList<Result>();