-1

there is an error while adding an adapter. there is a nullpointerException. i don't know why this happens. this code is making a custom listview. I make three classes for it.

this is mainActivity


public class ScheduleActivity extends AppCompatActivity {

    // Changes
    ListView listView;
    ScheduleAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_schedule);
        listView =(ListView)findViewById(R.id.schedule_list);
        ArrayList<Integer> weeks=new ArrayList<>();
        weeks.add(0);
        weeks.add(1);
        adapter.addItem(11,0,12,0,weeks);
        listView.setAdapter(adapter);
        
        //image button
        ImageButton Block = findViewById(R.id.Block);
        Block.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(getApplicationContext(), MainActivity.class);
                startActivityForResult(intent, 101);
                overridePendingTransition(0, 0);
            }
        });
        ImageButton Friends = findViewById(R.id.Friends);
        Block.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(getApplicationContext(), FriendActivity.class);
                startActivityForResult(intent, 101);
                overridePendingTransition(0, 0);
            }
        });
        ImageButton Graph = findViewById(R.id.Graph);
        Graph.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(getApplicationContext(), GraphActivity.class);
                startActivityForResult(intent, 101);
                overridePendingTransition(0, 0);
            }
        });
        //text for button
        TextView txtGraph = findViewById(R.id.textGraph);
        txtGraph.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(getApplicationContext(), GraphActivity.class);
                startActivityForResult(intent, 101);
                overridePendingTransition(0, 0);
            }
        });
        TextView txtOption = findViewById(R.id.textFriends);
        txtOption.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(getApplicationContext(), FriendActivity.class);
                startActivityForResult(intent, 101);
                overridePendingTransition(0, 0);
            }
        });
        TextView txtBlock = findViewById(R.id.textBlock);
        txtBlock.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(getApplicationContext(), MainActivity.class);
                startActivityForResult(intent, 101);
                overridePendingTransition(0, 0);
            }
        });
    }



}


this is adapter class

public class ScheduleAdapter extends BaseAdapter {

    private ArrayList<ItemViewList> itemViewLists= new ArrayList<ItemViewList>();

    @Override
    public int getCount() {
        return itemViewLists.size();
    }

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

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        final Context context =parent.getContext();
        if(convertView==null){
            LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView=inflater.inflate(R.layout.schedule_context,parent,false);
        }
        TextView startTime=convertView.findViewById(R.id.startTime);
        TextView endTime=convertView.findViewById(R.id.EndTime);
        TextView monday=convertView.findViewById(R.id.Monday);
        TextView tuesday=convertView.findViewById(R.id.Tuesday);
        TextView wednesday=convertView.findViewById(R.id.Wendsday);
        TextView thursday=convertView.findViewById(R.id.Thursday);
        TextView friday=convertView.findViewById(R.id.Friday);
        TextView saturday=convertView.findViewById(R.id.Saturday);
        TextView sunday=convertView.findViewById(R.id.Sunday);

        ItemViewList Item=itemViewLists.get(position);
        Log.i("db",Item.getStartThour()+":"+Item.getStartTminute()+"~"+Item.getEndThour()+":"+Item.getEndTminute()+"/");
        startTime.setText(Item.getStartThour()+":"+Item.getStartTminute());
        endTime.setText(Item.getEndThour()+":"+Item.getEndTminute());
        ArrayList<Integer> weeks=Item.getWeek();
        for(int j=0;j<weeks.size();j++){
            switch(weeks.get(j)){
                case 0:
                    monday.setText("월");
                    break;
                case 1:
                    tuesday.setText("화");
                    break;
                case 2:
                    wednesday.setText("수");
                    break;
                case 3:
                    thursday.setText("목");
                    break;
                case 4:
                    friday.setText("금");
                    break;
                case 5:
                    saturday.setText("토");
                    break;
                case 6:
                    sunday.setText("일");
                    break;
            }
        }

        return convertView;
    }
    public void addItem(int starthour, int startminute,
                        int Endhour, int Endminute,ArrayList<Integer> week){
        ItemViewList item= new ItemViewList();
        item.setStartT(starthour,startminute);
        item.setEndT(Endhour, Endminute);
        item.setWeek(week);
        itemViewLists.add(item);
    }
}

this is Item getter setter class

package com.gachon.concentration_term;

import java.util.ArrayList;

public class ItemViewList {
    private int startThour;
    private int startTminute;
    private int endThour;
    private int endTminute;
    private ArrayList<Integer> week;
    public void setStartT(int hour, int minute){
        startThour=hour;
        startTminute=minute;
    }
    public void setEndT(int hour, int minute){
        endThour=hour;
        endTminute=minute;
    }
    public void setWeek(ArrayList<Integer> week1){
        week=week1;
    }

    public int getStartThour() {
        return startThour;
    }

    public int getStartTminute() {
        return startTminute;
    }

    public int getEndThour() {
        return endThour;
    }

    public int getEndTminute() {
        return endTminute;
    }

    public ArrayList<Integer> getWeek() {
        return week;
    }
}

there is an error in MainActivity in 'adapter.addItem()'. is there a problem in adapter? or gettersetter class?

klego99
  • 9
  • 4
  • Where do you expect the `adapter` field to be assigned a non-null value? Where do you expect to ever create an instance of `ScheduleAdapter`? – Jon Skeet May 14 '22 at 12:10
  • First of all I see that you hasn't initialized the adapter. Second you add items but you don't notify adapter about changes. – deadfish May 14 '22 at 12:18
  • 1
    Does this answer your question? [What is a NullPointerException, and how do I fix it?](https://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it). The exception message will tell you exactly which variable is null, and the fix is to initialize it before calling it so it is non-null. – Tyler V May 14 '22 at 13:49

0 Answers0