我正在創建一個Android應用程序,其中我在對話框中使用了ListView。我想改變項目的背景顏色點擊,我已經完成了這個在setOnItemClickListener的幫助下。我將所有選定的值存儲在ListArray中。我想要這樣做,如果用戶再次打開該對話框,它必須根據ListArray中的數據顯示他已經選擇的內容。確切的問題是,當我回到頁面並離開對話框時,列表得到更新並且沒有顯示選擇。如何以編程方式更改ListView的特定項目的背景Android
我這是怎麼顯示選定的項目。 這是代碼我已經習慣了這樣做...
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:嘗試上的空對象引用調用虛擬方法 '無效 android.view.View.setBackgroundColor(int)的'
如何解決這個問題。
錯誤的情景發生,當你選擇任何工作然後離開對話框,然後再次打開它糾正我,如果我錯了 – Dhiraj
是你的代碼,而無需離開對話框博工作X? – Dhiraj
是工作正常,不離開對話框 您正確理解 –