微调与自定义布局不显示任何的Andr​​oid [英] Spinner with custom layout doesn't show nothing Android

查看:134
本文介绍了微调与自定义布局不显示任何的Andr​​oid的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的应用程序必须使用一个微调应该表现出三个项目(IT,EN,PR)。我还必须使用个性化的布局。在code是在在onCreate方法另一个适配器:

in my application I must use a spinner that should show three items (IT,EN,PR). I must also use a personalized layout. The code is in an another adapter in onCreate method:

holder.spinnerLenguage = (Spinner) convertView
                .findViewById(R.id.spinnerLenguage);
        ArrayList<String> spinnerArray = new ArrayList<String>();
        spinnerArray.add("IT");
        spinnerArray.add("EN");
        spinnerArray.add("PR");
        final lenguageSpinnerAdapter lenguageAdapter = new lenguageSpinnerAdapter(
                convertView.getContext(), spinnerArray);
        holder.spinnerLenguage.setAdapter(lenguageAdapter);

        holder.spinnerLenguage
                .setOnItemSelectedListener(new OnItemSelectedListener()
...
...

适配器类是:

private class lenguageSpinnerAdapter extends ArrayAdapter<String> implements
        SpinnerAdapter {

    private ArrayList<String> lenguages;

    public lenguageSpinnerAdapter(Context context,
            ArrayList<String> lenguages) {
        super(context, R.layout.lenguage_item_layout);
        this.lenguages = lenguages;
    }

    @Override
    public View getDropDownView(int position, View convertView,
            ViewGroup parent) {
        // First let's verify the convertView is not null
        if (convertView == null) {
            // This a new view we inflate the new layout
            LayoutInflater inflater = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.lenguage_item_layout,
                    parent, false);
        }

        TextView lenguage = (TextView) convertView
                .findViewById(R.id.textViewLenguage);
        lenguage.setText(lenguages.get(position).toString());

        return convertView;

    }

}

编辑:与getCount将错误是:

with getCount the error is:

07-11 11:09:20.222: E/AndroidRuntime(32564): FATAL EXCEPTION: main
07-11 11:09:20.222: E/AndroidRuntime(32564): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.app/com.app.FlipMainActivity}: java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView
07-11 11:09:20.222: E/AndroidRuntime(32564):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2247)
07-11 11:09:20.222: E/AndroidRuntime(32564):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2297)
07-11 11:09:20.222: E/AndroidRuntime(32564):    at android.app.ActivityThread.access$700(ActivityThread.java:152)
07-11 11:09:20.222: E/AndroidRuntime(32564):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1282)
07-11 11:09:20.222: E/AndroidRuntime(32564):    at android.os.Handler.dispatchMessage(Handler.java:99)
07-11 11:09:20.222: E/AndroidRuntime(32564):    at android.os.Looper.loop(Looper.java:137)
07-11 11:09:20.222: E/AndroidRuntime(32564):    at android.app.ActivityThread.main(ActivityThread.java:5328)
07-11 11:09:20.222: E/AndroidRuntime(32564):    at java.lang.reflect.Method.invokeNative(Native Method)
07-11 11:09:20.222: E/AndroidRuntime(32564):    at java.lang.reflect.Method.invoke(Method.java:511)
07-11 11:09:20.222: E/AndroidRuntime(32564):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
07-11 11:09:20.222: E/AndroidRuntime(32564):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
07-11 11:09:20.222: E/AndroidRuntime(32564):    at dalvik.system.NativeStart.main(Native Method)
07-11 11:09:20.222: E/AndroidRuntime(32564): Caused by: java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView
07-11 11:09:20.222: E/AndroidRuntime(32564):    at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:386)
07-11 11:09:20.222: E/AndroidRuntime(32564):    at android.widget.ArrayAdapter.getView(ArrayAdapter.java:362)
07-11 11:09:20.222: E/AndroidRuntime(32564):    
07-11 11:09:20.222: E/AndroidRuntime(32564):    at android.widget.Spinner.onMeasure(Spinner.java:443)
07-11 11:09:20.222: E/AndroidRuntime(32564):    at android.view.View.measure(View.java:16059)
071 11:09:20.222: E/AndroidRuntime(32564):  at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:681)
07-11 11:09:20.222: E/AndroidRuntime(32564):    at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461)
07-11 11:09:20.222: E/AndroidRuntime(32564):    at android.view.View.measure(View.java:16059)
07-11 11:09:20.222: E/AndroidRuntime(32564):    at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:681)
...
...
07-11 11:09:20.222: E/AndroidRuntime(32564): Caused by: java.lang.ClassCastException: android.widget.RelativeLayout cannot be cast to android.widget.TextView
07-11 11:09:20.222: E/AndroidRuntime(32564):    at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:379)
07-11 11:09:20.222: E/AndroidRuntime(32564):    ... 29 more

微调器绘制的布局,但没有项目。任何想法?

The spinner is draw in the layout but there are no items. Any ideas?

推荐答案

尝试实施以下,而不是你的One code。

Try to implement following code instead of your one.

private class lenguageSpinnerAdapter extends BaseAdapter implements
        SpinnerAdapter {

    private ArrayList<String> lenguages;

    public lenguageSpinnerAdapter(Context context,
            ArrayList<String> lenguages) {
        this.lenguages = lenguages;
    }

    public int getCount() {
        return lenguages.size();
    }

    public Object getItem(int position) {
        return lenguages.get(position);
    }

    public long getItemId(int position) {
        return position;
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            // This a new view we inflate the new layout
            LayoutInflater inflater = (LayoutInflater) getApplicationContext()
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.get_exercise_activity,
                    parent, false);
        }

        TextView lenguage = (TextView) convertView
                .findViewById(R.id.btnSave);
        lenguage.setText(lenguages.get(position).toString());

        return convertView;
    }

}

这篇关于微调与自定义布局不显示任何的Andr​​oid的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆