Я пишу расписание в студии android, и мне нужны первые буквы дней недели для просмотра изображений и фактический день, который хранится в строке для отображения вдоль изображения. Я использую карты для этого. К сожалению, я получаю NPE «Попытка вызвать виртуальный метод» void. android .widget.textview.setText (java .lang.charsequence) 'для нулевой ссылки на объект в строке номер 103, которая имеет держатель. tvWeek.setText (week [position]); . Вот мой код
public class weekActivity extends AppCompatActivity {
private Toolbar toolbar;
private ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_week);
setUIViews();
initToolbar();
setupListView();
}
private void setUIViews() {
toolbar = findViewById(R.id.ToolBarWeek);
listView = findViewById(R.id.tvWeek);
}
private void initToolbar() {
setSupportActionBar(toolbar);
getSupportActionBar().setTitle("WEEK");
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
private void setupListView() {
String[] week = getResources().getStringArray(R.array.week);
WeekAdapter adapter = new WeekAdapter(this, R.layout.activity_week_single_item, week);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
switch (i) {
case 0:
break;
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 5:
break;
case 6:
break;
default:
break;
}
}
});
}
public class WeekAdapter extends ArrayAdapter {
private int resource;
private LayoutInflater layoutInflater;
private String[] week = new String[]{};
public WeekAdapter(Context context, int resource, String[] objects) {
super(context, resource, objects);
this.resource = resource;
this.week = objects;
layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
viewHolder holder;
if (convertView == null) {
holder = new viewHolder();
convertView = layoutInflater.inflate(resource, null);
holder.ivLogo = (LetterImageView) convertView.findViewById(R.id.ivLetter);
holder.tvWeek = (TextView) convertView.findViewById(R.id.tvMain);
convertView.setTag(holder);
} else {
holder = (viewHolder) convertView.getTag();
}
holder.ivLogo.setOval(true);
holder.ivLogo.setLetter(week[position].charAt(0));
holder.tvWeek.setText(week[position]);
return convertView;
}
class viewHolder {
private LetterImageView ivLogo;
private TextView tvWeek;
}
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home: {
onBackPressed();
}
}
return super.onOptionsItemSelected(item);
}
}