2016-08-03 6 views
0

アイコンと文字列を含むカスタムスピナーを作成しますが、リソース配列から取得した値を作成します。
問題は、起動しないアプリを実行するときです。しかし、私はこのアクティビティ内で配列を宣言するときには発生しません
すでに変数をoncreateに移動しましたが、アイコンがアプリケーションに表示されませんでした。どうして?カスタムスピナーにはドロウアブルと文字列が含まれています

以下は私がこれまで行って失敗したことです。

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <integer-array name="d_icon"> 
     <item>@drawable/d1</item> 
     <item>@drawable/d2</item> 
     <item>@drawable/d3</item> 
     <item>@drawable/d4</item> 
     <item>@drawable/d5</item> 
    </integer-array> 
    <string-array name="d_code"> 
     <item>d1</item> 
     <item>d2</item> 
     <item>d3</item> 
     <item>d4</item> 
     <item>d5</item> 
    </string-array> 
    <string-array name="d_condition"> 
     <item>1</item> 
     <item>1</item> 
     <item>1</item> 
     <item>0</item> 
     <item>1</item> 
    </string-array> 
</resources> 

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/Hello" 
     /> 
    <Spinner 
     android:id="@+id/spinner" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     /> 
</LinearLayout> 

custom_spinner_items.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal"> 

    <ImageView 
     android:id="@+id/imageView" 
     android:layout_width="50dp" 
     android:layout_height="50dp" 
     android:padding="5dp" 
     android:src="@mipmap/ic_launcher" /> 

    <TextView 
     android:id="@+id/textView" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:padding="@dimen/activity_horizontal_margin" 
     android:text="Demo" 
     android:textColor="#000" /> 
</LinearLayout> 

MainActivity私が間違って

のres /値/ array.xmlを行ったの場所を教えてください.java:

package com.training.androidcustomspinner; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.Spinner; 

public class MainActivity extends Activity { 

    //String[] vcode = {"d1","d2","d3","d4","d5"}; 
    //int vicon[] = {R.drawable.d1, R.drawable.d2, R.drawable.d3, R.drawable.d4, R.drawable.d5}; 
    String[] vcode = getResources().getStringArray(R.array.d_code); 
    int vicon[] = getResources().getIntArray(R.array.d_icon); 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Spinner mySpinner = (Spinner)findViewById(R.id.spinner); 

     CustomAdapter customAdapter=new CustomAdapter(getApplicationContext(),vicon,vcode); 
     mySpinner.setAdapter(customAdapter); 
    } 
} 

CustomAdapter.java

package com.training.androidcustomspinner; 

import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.ImageView; 
import android.widget.TextView; 

public class CustomAdapter extends BaseAdapter { 
    Context context; 
    int vicon[]; 
    String[] vcode; 
    LayoutInflater inflter; 

    public CustomAdapter(Context applicationContext, int[] vicon, String[] vcode) { 
     this.context = applicationContext; 
     this.vicon = vicon; 
     this.vcode = vcode; 
     inflter = (LayoutInflater.from(applicationContext)); 
    } 

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

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

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

    @Override 
    public View getView(int i, View view, ViewGroup viewGroup) { 
     view = inflter.inflate(R.layout.custom_spinner_items, null); 
     ImageView icon = (ImageView) view.findViewById(R.id.imageView); 
     TextView names = (TextView) view.findViewById(R.id.textView); 
     icon.setImageResource(vicon[i]); 
     names.setText(vcode[i]); 
     return view; 
    } 
} 
+0

xmlファイルを投稿できますか? – bpachev

+0

OK、投稿を編集して追加します。 – user3931627

+0

問題点は何ですか? – Vickyexpert

答えて

0

私のアダプタは、ArrayAdapterを拡張し、getDropDownViewを実装し、それは私のために動作します。フォローのように

public class SimpleAdapter extends ArrayAdapter<String> { 
    public SimpleAdapter(Context context, int resource, String[] objects) { 
     super(context, resource, objects); 
    } 

    public SimpleAdapter(Context context, int resource, List<String> objects) { 
     super(context, resource, objects); 
    } 

    public SimpleAdapter(Context context, int resource, int textViewResourceId, String[] objects) { 
     super(context, resource, textViewResourceId, objects); 
    } 

    public SimpleAdapter(Context context, int resource, int textViewResourceId, List<String> objects) { 
     super(context, resource, textViewResourceId, objects); 
    } 

    @Override 
    public View getDropDownView(int position, View convertView, ViewGroup parent) { 
     return super.getDropDownView(position, convertView, parent); 
    } 
} 
+0

私のために働かなかった、あなたは私にどのようにあなたの行いましたか? – user3931627

+0

を配列アダプターまたはベースアダプターとともに使用すると、次のようになります。String [] vcode = {"d1"、 "d2"、 "d3"、 "d4"、 "d5"};これはできません String [] vcode = getResources()。getStringArray(R.array.d_code) – user3931627

関連する問題