【发布时间】:2016-02-17 11:34:58
【问题描述】:
我正在创建一个 android 应用程序,其中我在对话框上使用 ListView。我想在单击时更改项目的背景颜色,我在 setOnItemClickListener 的帮助下完成了这项工作。我将所有选定的值存储在 ListArray 中。如果用户再次打开该对话框,我想这样做,它必须根据 ListArray 中的数据显示他已经选择的内容。确切的问题是当我回到页面并离开对话框时,列表得到了更新并且没有显示任何选择。
这就是我显示所选项目的方式。 这是我用来做的代码......
listJobs.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
selectedJob = a.getItemAtPosition(position).toString();
if (!arraySelectedJobs.contains(selectedJob)) {
a.getChildAt(position).setBackgroundColor(YELLOW);
arraySelectedJobs.add(selectedJob);
Log.e("position", String.valueOf(position));
} else {
a.getChildAt(position).setBackgroundColor(Color.WHITE);
arraySelectedJobs.remove(selectedJob);
}
Log.e("data", arraySelectedJobs.toString());
}
});
当用户再次打开该对话框时,我正在尝试显示该选定项目。
listJobs = (ListView) Jobs.findViewById(R.id.listJobs123456);
button_ok = (Button) Jobs.findViewById(R.id.ButtonOk);
button_ok.setOnClickListener(this);
jobListViewAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, arrayListJobs);
listJobs.setAdapter(jobListViewAdapter);
if(!arraySelectedJobs.isEmpty())
{
for(int i=0;i<arraySelectedJobs.size();i++)
{
try
{
int value = arrayListJobs.indexOf(arraySelectedJobs.get(i));
listJobs .getChildAt(value).setBackgroundColor(YELLOW);
}
catch(Exception ex)
{
Log.e("error",ex.toString());
}
}
}
我收到这个错误
java.lang.NullPointerException: 尝试调用虚方法 'void android.view.View.setBackgroundColor(int)' 在空对象引用上
如何解决这个问题。
【问题讨论】:
-
当您选择任何工作然后离开对话框并再次打开它时发生错误,如果我错了,请纠正我
-
您的代码是否在不离开对话框的情况下工作?
-
是的,工作正常,不离开对话框你理解正确
-
能否在日志中打印值 listJobs .getChildAt(value)
-
确保这不应该为空
标签: android listview arraylist