gpt4 book ai didi

android - ListView getChildAt() 返回 null

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:02:17 33 4
gpt4 key购买 nike

我一直在做一个 android 项目,但遇到了一个问题。我用谷歌搜索但没有找到答案。在我的项目中,有一个名为 viewsurahfragment 的 fragment ,它包含一个 id 为 lv_showquran 的 ListView 。

我想在指定索引处突出显示 ListView 的 View 。我正在使用 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() 时返回 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() 返回 0,但项目显示在 ListView 中。
谁能告诉我哪里做错了。
在此先感谢您的帮助。

最佳答案

这会产生空值:

 TextView textView = (TextView) listView.getChildAt(0);
Log.i("item", textView.getText().toString());

这不是:

    TextView textView = (TextView) listView.getAdapter().getView(0, null, listView);
Log.i("item", textView.getText().toString());

此示例使用了 android.R.layout.simple_list_item_1,因此请记住 TextView 是 simple_list_item_1 中的 Root View 。

关于android - ListView getChildAt() 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31206674/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com