【发布时间】:2020-05-04 20:52:08
【问题描述】:
我正在 android studio 中编写一个时间表应用程序,我希望将一周中的第一个字母作为图像视图,并将实际日期存储在字符串中以与图像视图一起显示。我正在为此使用cardviews。不幸的是,我在第 103 行的空对象引用上得到一个 NPE“尝试调用虚拟方法 'void.android.widget.textview.setText(java.lang.charsequence)',该引用具有 holder.tvWeek.setText(周[位置]);。 这是我的代码
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);
}
}
【问题讨论】:
-
你好。请正确格式化您的代码,我们不能从这个布局中理解很多。在文本框上方,您有一个“{ }”选项。单击它并将代码粘贴到那里。
-
把代码放在```里面两次,会好看很多
-
你需要发布你的布局 XML
标签: java arrays android-studio cardview