Я хочу создать собственный счетчик, содержащий значок и строку, но значение, взятое из массива ресурсов.
Проблема в том, что я запускаю приложение, которое он не запускает. Но этого не происходит, когда я объявляю массив внутри операции
, объявив, что я имею в виду это: String[] vcode = {"d1","d2","d3","d4","d5"};
Я уже переместил эту переменную в oncreate
, но значок не появился в моем приложении. Зачем?Пользовательский Spinner содержит drawable и string
Следующее - то, что я сделал до сих пор, и потерпел неудачу. Пожалуйста, скажите мне, где я ошибся
Рез/значения/array.xml:
<?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 .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;
}
}
Можете ли вы разместить свои xml-файлы? – bpachev
ОК, я отредактирую сообщение и добавлю его. – user3931627
В чем проблема? – Vickyexpert