我一直在研究一個android項目並陷入了一個問題。我GOOGLE了它,但沒有找到答案。 在我的項目中,有一個名爲viewsurahfragment
的片段,它包含一個ID爲lv_showquran
的列表視圖。listview getChildAt()返回null
我想突出顯示在指定的索引列表視圖。我正在使用listview.getchildat(),但它返回值爲null
。
這是viewsurahfragment的代碼。不相關的功能是有效的。
public class ViewSurahFragment extends Fragment
{
private ListView listView;
private int currentSurah;
private String surahName;
private DatabaseHelper databaseHelper;
private ArrayAdapter<String> arrayAdapter;
@Override
public void onViewCreated(View view, Bundle savedInstanceState)
{
super.onViewCreated(view, savedInstanceState);
// this.listView = (ListView) getActivity().findViewById(R.id.lv_showQuran);
}
@Override
public void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
this.listView = (ListView) getActivity().findViewById(R.id.lv_showQuran);
}
private void displayAyas()
{
String[] values = this.getSurahAyas();
this.listView.setItemsCanFocus(true);
this.arrayAdapter = new ArrayAdapter<>(this.getActivity().getApplicationContext(), R.layout.layout_surah_ayah, values);
this.listView.setAdapter(this.arrayAdapter);
this.listView.setOnItemClickListener(new AdapterView.OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
}
});
registerForContextMenu(this.listView);
}
public void highlightAyah(int ayahNum)
{
TextView view = (TextView) this.listView.getChildAt(ayahNum - 1);
Log.i("ViewSurahFragment", "List View Child Counts Are: " + this.listView.getChildCount());
if(view == null)
Log.i("ViewSurahFragment", "view is null");
}
}
不要梅特我是否使用的代碼以下行無論是在onactivitycreated
或onviewcreated
,它返回在highlightayah
函數調用listview.getchildat()無效。
this.listView = (ListView) getActivity().findViewById(R.id.lv_showQuran);
我也試着做下面的事,但它也沒有爲我工作。
ListView view = (ListView) getActivity().findViewById(R.id.lv_showQuran);
TextView v = (TextView) view.getChildAt(ayahNum);
Log.i("ViewSurahFragment", "List View Child Counts Are: " + view.getChildCount());
if(v == null)
Log.i("ViewSurahFragment", "view is null");
但對我來說,有趣的是,getchildviewcount() return 0
在任何解決方案,我用,但項目顯示在列表視圖。
有誰可以請告訴我我在哪裏做錯了。
在此先感謝您的幫助。
[大寫字母](https://en.wikipedia.org/wiki/Capitalization_in_English)上每個單詞都很難閱讀... – 2Dee
對不起,我有一個這樣做的壞習慣。我希望有一天我會擺脫這個問題。我正在編輯我的帖子,並嘗試刪除capatilization。謝謝指出。 –
沒問題,mate,英文不是每個人的母語,實際上它也不是我的;)無論如何,感謝編輯!關於你的問題,你爲什麼要在Activity的佈局中尋找ListView?你在哪裏打電話public void highlightAyah(int ayahNum)?你如何確保你用一個小於列表內容的數字來調用該方法? – 2Dee