I have been working on an android project and stuck in a problem. I googled it but found no answer.
In my project, there is a fragment named viewsurahfragment
and it contains a listview whose id is lv_showquran
.
I want to highlight the view of the listview at specified index. I am using listview.getchildat() but it return null
value.
Here is the code for viewsurahfragment. Irrelevant functions are emited.
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");
}
}
Don't metter whether i used following line of code either in onactivitycreated
or in onviewcreated
, it returned null on calling listview.getchildat() in highlightayah
function.
this.listView = (ListView) getActivity().findViewById(R.id.lv_showQuran);
I also tried to do following, but it also didn't work for me.
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");
But the interesting thing for me is that getchildviewcount() return 0
in either solutions i used, but items are displayed in the listview.
Can anybody please tell me where i'm doing mistake.
Thanks in advance for helping.
public void highlightAyah(int ayahNum)
is called by the activity hosted this fragment and it (activity) perform the validation. – GallicayahNum
? I wouldn't be surprised ifayahNum
was 0, and returnsnull
because the input for.getChildAt()
would really be -1 (since you substract 1 of the input). – Profanatorylistview
in theonCreateView
but after that calling thegetViewCount()
in thehighlightAyah
also return 0. here is code foronCreateView
View view = inflater.inflate(R.layout.fragment_view_surah, container, false);
this.listView = (ListView) view.findViewById(R.id.lv_showQuran);
return view;
– Gallic