Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 自定义阵列适配器返回空白屏幕?_Java_Android_Listview_Android Arrayadapter_Listactivity - Fatal编程技术网

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

Java 自定义阵列适配器返回空白屏幕?,java,android,listview,android-arrayadapter,listactivity,Java,Android,Listview,Android Arrayadapter,Listactivity,我对应用程序开发还是一个新手,所以这可能是一个非常愚蠢的问题,但我似乎找不到正确的答案(或者至少是一个用我有限的java知识可以理解的答案) 我正在使用一个名为ListRow的自定义ArrayAdapter。它适用于常规活动,但不适用于我的应用程序运行所需的ListActivity 下面是我正在使用的代码示例。任何帮助都将不胜感激,你将帮上大忙 ListView mListview; /** Called when the activity is first created. */ @Ove

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

我正在使用一个名为ListRow的自定义ArrayAdapter。它适用于常规活动,但不适用于我的应用程序运行所需的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>

如果可以的话,请和我一起用小词lol,java对我来说很难理解,并且尽可能多地解释。提前谢谢

明白了! 所以我让你们都经历了一场地狱。包含我的列表项的布局称为列表项,而不是列表视图。不过我在这里学到了很多,所以非常感谢大家!我希望有办法帮你们


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

您需要以这种方式设置适配器

setListAdapter(new ListRow(this, your_theme_names_array, your_theme_icon_array));
您不需要为此使用ArrayAdapter,这只是为了为字符串数组创建适配器

已编辑

布局XML没有我认为的问题

逐个检查下面给出的列表

检查表

  • 检查R.layout.list\视图是否指向问题中给出的布局
  • 尝试设置适配器setListAdapter(newlistrow(this,String[]{},int[]{}));它将显示你的空白屏幕(如果你得到了空白的屏幕,这意味着无论是名字还是图标都是空的,或者它们的值是空的)
  • 删除行imageView.setImageResource(mThemeIcons[position]);和 setText(mthemename[position]);这也会给你一个空白屏幕(如果你得到的是空白屏幕,那么R.layout.list_视图不包含R.id.image或R.id.text)

您必须在setListAdapter中的ArrayAdapter中添加mListView。只有这样,listview的内容才会以您在customadapter中提到的模式显示。我看不到您在listview中添加元素的位置。

同时删除这一行
List=new View(mContext);
from
getView()
List=新视图(mContext)当convertView为nullno时需要,因为他正在从resource
R.layout.list\u View
膨胀他的视图,所以不需要创建另一个
视图
对象。我按照您的指定在setListAdapter行中更改了它,但现在打开该活动时它只是强制关闭。Logcat显示了一个空指针Exception@Andrew告诉我一个t获取NullPointerException的哪一行我更新了问题的位置,我假设它应该去哪里,如果这不正确,请告知您认为应该去哪里。此链接将帮助您。它包含自定义列表视图的代码[1]:谢谢你的提示,但正如我所说,我对java非常陌生,发布类似的内容对我没有多大帮助,因为我几乎不知道我在看什么……我会继续四处寻找更多描述性示例