【发布时间】:2015-07-03 12:17:31
【问题描述】:
我一直在做一个 android 项目,但遇到了一个问题。我用谷歌搜索但没有找到答案。
在我的项目中,有一个名为viewsurahfragment 的片段,它包含一个id 为lv_showquran 的列表视图。
我想突出显示指定索引处的列表视图的视图。我正在使用 listview.getchildat() 但它返回 null 值。
这是viewurahfragment的代码。发出不相关的函数。
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() 时返回null。
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 在我使用的任一解决方案中,但项目显示在列表视图中。
谁能告诉我我在哪里做错了。
提前感谢您的帮助。
【问题讨论】:
-
Capitalization 每个字都很难读...
-
对不起,我有这样做的坏习惯。我希望有一天我能摆脱这个问题。我正在编辑我的帖子并尝试删除 capatilization。感谢您的指出。
-
没问题,伙计,英语不是每个人的母语,事实上它也不是我的;)无论如何,感谢您的编辑!关于您的问题,您为什么要在 Activity 的布局中寻找 ListView ?你在哪里调用 public void highlightAyah(int ayahNum) ?您如何确保使用 =
-
感谢您的耐心等待。无论如何,让我们言归正传。众所周知,一个 Fragment 由一个活动托管;因此,要访问它的任何视图,我们需要引用活动。正如我上面提到的,发出无关代码以仅显示对于此问题值得注意的代码。但是
public void highlightAyah(int ayahNum)由托管此片段的活动调用,并且它(活动)执行验证。 -
ayahNum的值是多少?如果ayahNum为0,我不会感到惊讶,并返回null,因为.getChildAt()的输入实际上是-1(因为你减去输入的1)。
标签: android listview android-listview