gpt4 book ai didi

java - 自定义阵列适配器返回空白屏幕?

转载 作者:行者123 更新时间:2023-12-01 15:30:28 25 4
gpt4 key购买 nike

我对应用程序开发还很陌生,所以这可能是一个非常愚蠢的问题,但我似乎找不到正确的答案(或者至少是我可以用我非常有限的java知识理解的答案)。

我正在使用名为 ListRow 的自定义 ArrayAdapter。它适用于常规 Activity,但不适用于我需要它才能使我的应用程序正常工作的 ListActivity。

下面是我正在使用的代码示例。任何帮助将不胜感激,您将提供很多帮助!

 ListView mListview;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setListAdapter(new ListRow(this, THEME_NAMES, THEME_ICONS));
getListView().setTextFilterEnabled(true);
}

public class ListRow extends BaseAdapter {
private Context mContext;
private String[] mThemeNames = THEME_NAMES;
private int[] mThemeIcons = THEME_ICONS;


public ListRow(Context c, String[] t, int[] i) {
mContext = c;
mThemeNames = t;
mThemeIcons = i;
mListview=(ListView)findViewById(R.id.list);
}

@Override
public int getCount() {
return mThemeNames.length;
}

@Override
public Object getItem(int arg0) {
return null;
}

@Override
public long getItemId(int arg0) {
return 0;
}

@Override
public View getView(int position, View converView, ViewGroup parent) {
View List;
if(converView==null){
List=new View(mContext);
LayoutInflater mLayoutinflater=getLayoutInflater();
List=mLayoutinflater.inflate(R.layout.list_view, parent, false);
} else {
List = (View)converView;
}
ImageView imageView = (ImageView)List.findViewById(R.id.image);
TextView textView = (TextView)List.findViewById(R.id.text);
imageView.setImageResource(mThemeIcons[position]);
textView.setText(mThemeNames[position]);
return List;
}
}

这是我为每个列表项定义的布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="center"
android:id="@+id/image"
android:layout_alignParentLeft="true"
android:contentDescription="@string/preview" />
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/image" />
</RelativeLayout>

如果可以的话,请跟我说小话,哈哈,java 对我来说很难理解,也请尽可能多地解释一下。提前致谢!

想通了!所以我只是让你们都经历了一点 hell 。包含我的列表项的布局称为 list_item,而不是 list_view。不过我在这里学到了很多东西,非常感谢你们!我希望有一种方法可以帮助你们......

这个问题的寓意是什么?检查您的布局名称!!

最佳答案

你需要这样设置Adapter

setListAdapter(new ListRow(this, your_theme_names_array, your_theme_icon_array));

您不需要为此使用 ArrayAdapter,这只是为字符串数组创建适配器

已编辑

布局 XML 没有我认为的问题。

一一检查下面给出的列表

检查 list

  • 检查 R.layout.list_view 是否指向您在问题中给出的布局。
  • 尝试设置适配器 setListAdapter(new ListRow(this, String[] { }, int[] { }));它会显示空白屏幕(如果出现空白屏幕,则意味着 THEME_NAMES 或 THEME_ICONS 为空或它们的值为空)
  • 删除线条 imageView.setImageResource(mThemeIcons[position]);和 textView.setText(mThemeNames[位置]);这也会给你空白屏幕(如果你得到空白屏幕,那么 R.layout.list_view 不包含 R.id.image 或 R.id.text。

关于java - 自定义阵列适配器返回空白屏幕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9579393/

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