チェックボックスが表示されたリストビューがあります。各ボックスのテキストは。で設定されますListAdapter
。すべてが読み込まれたら、デフォルトでいくつかのチェックボックスをオンにし、いくつかのチェックボックスをオフにする必要があります。setChecked
チェックボックスを呼び出すことはできますが、機能しません。これはonCreate()
、ビューにまだ表示されていないためだと思います。だから私はそれをに移動しましたonResume()
、onCreate()
そして今のところそれはまだ機能しません。それらはまだロードされておらず、画面に表示されていないようです。
private void markAllTags()//this will put a check mark on the ones that are already a tag of that question
{
String tags[] = mUserDb.fetchTagById(mQid);//These are the tags that are already associated with this question
for(int i = 0; i < this.getListAdapter().getCount(); i++)
{
View v = this.getListAdapter().getView(i, null, null);
//Log.w("NME", "I = " + this.getListAdapter().getView(i, null, null).findViewById(R.id.checkBox1));
if(v != null)
{
CheckBox cb = (CheckBox)v.findViewById(R.id.checkBox1);
String cbTags = "" + cb.getText();
for(int j = 0; j < tags.length; j++)
{
//Log.w("NME", "cbTag = " + cbTags + " tags[j] = " + tags[j]);
if(cbTags.equals(tags[j]))
{
cb.setChecked(true);
}
}
}
}
}
これは現在onStartから呼び出されています。
使用するlistview.getchildAt()
と、null値を受け取ります。
編集:クラッシュはないので、logcatには実際には何も表示されません。したがって、問題は、最後のifステートメントが満たされたときに、チェック済みとしてマークされないことです。
編集2:それで私はさらにいくつかのことを試みました。上記の機能をボタンにリンクしましたが、それでも機能しませんでした。設定されている行を変更したときView v
。これView v = mListView.getChildAt(i);
にボタンを押すと動作しました。ただし、アクティビティの開始時にはまだ機能しません。問題は、vがnullであるということです。