2017-11-07 8 views
-2

私は配列アダプターを使用してイメージとテキストを挿入するスピナーを作成しました。 OnItemSelected on私は画像だけではなく、テキストのみを選択したい。ここでAndroidカスタムスピナーSelectedItem

はMainActivity.java

ArrayList<ItemData> list = new ArrayList<>(); 

list.add(new ItemData("Select Plan Category",R.drawable.ic_bars)); 
list.add(new ItemData("Hookah",R.drawable.ic_006_hookah)); 
list.add(new ItemData("Drinks",R.drawable.ic_005_pint)); 
list.add(new ItemData("Gedi",R.drawable.ic_004_racing)); 
list.add(new ItemData("Snacks",R.drawable.ic_003_chips)); 
list.add(new ItemData("Shopping",R.drawable.ic_002_cart)); 
list.add(new ItemData("Bownling",R.drawable.ic_001_bowling)); 

SpinnerAdapter adapter = new SpinnerAdapter(getActivity(), R.layout.spinner_layout,R.id.categoryText,list); 
categorySpinnerjava.setAdapter(adapter); 

のための私のコードはここで(つまり、拡張されItemData.java

public class ItemData { 

    private String planCategorytext = ""; 
    Integer imageId; 

    public ItemData(String text, Integer imageId) 
    { 
     this.planCategorytext=text; 
     this.imageId=imageId; 
    } 

    public String getPlanCategorytext() { 
     return planCategorytext; 
    } 

    public void setPlanCategorytext(String planCategorytext) { 
     this.planCategorytext = planCategorytext; 
    } 

    public Integer getImageId() { 
     return imageId; 
    } 

    public void setImageId(Integer imageId) { 
     this.imageId = imageId; 
    } 
} 

ための私のコードであり、ここでSpinnerAdapter.javaための私のコードですArrayAdapter

int groupid; 
Activity getActivity; 
ArrayList<ItemData> list; 

LayoutInflater inflater; 

public SpinnerAdapter(Activity context, int groupid, int id, ArrayList<ItemData> list) { 
    super(context, id,list); 

    this.list=list; 
    inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    this.groupid=groupid; 

} 

public View getView(int position, View convertView, ViewGroup parent) 
{ 

    View itemView = inflater.inflate(groupid,parent,false); 

    ImageView imageView=(ImageView)itemView.findViewById(R.id.categoryVector); 
    imageView.setImageResource(list.get(position).getImageId()); 

    TextView textView = (TextView)itemView.findViewById(R.id.categoryText); 
    textView.setText(list.get(position).getPlanCategorytext()); 


    return itemView; 
} 
public View getDropDownView(int position, View convertView, ViewGroup parent) 
{ 
    return getView(position,convertView,parent); 
} 

私は通常画像を選択しません。電子

String spinnerselection = categorySpinnerjava.getSelectedItem().toString(); 

それはInterfaceを使用して実装してみてくれ "[email protected]"

答えて

0

を試してみてください

adapter.getItem(position);

@Override 
public String getItem(int position) { 
    return list.get(position); 
} 
+0

私は文字列を使用しましたselectedText = list.get(pos).getPlanCategorytext(); しかし、ArrayList finalを宣言するように私に尋ねました。 それは機能しますが、最終的にarraylistの宣言は何をしましたか? –

+0

最終決定は、フィールドが定数であり、変更できないことを保証します。これにより、メソッド内の任意の場所で使用される値が、渡された値を参照することが保証されます。 – captaindroid

+1

@UjjwalBassi、その場合は答えとして受け入れてください。 – captaindroid

0

の出力を提供します。 SpinnerAdapter内部

設定したテキストデータと、選択したテキスト

0

は、次のことを試してみてください取得するためにActivityクラスでInterfaceを拡張:

String spinnerselection = ((ItemData) categorySpinnerjava.getSelectedItem()).getPlanCategorytext(); 

はまだそれを試していないが、理論的にはそれが動作するはずです。

1

あなたはこのエラーを取得しているため、

"[email protected]"

あなたcategorySpinnerjava.getSelectedItem();ItemDataString

この

を試していないモデルクラスを返します
ItemData itemData = (ItemData) categorySpinnerjava.getSelectedItem(); 
String data= itemData.getPlanCategorytext(); 
Integer imageId = itemData.getImageId(); 
+1

categorySpinnerjava.getSelectedItem().toString();を交換する必要があります。これについても

。やってみて! –

0

Override getItem()あなたは以下の方法で選択されたスピナー項目のテキストを取得することができ、このよう

ItemData spinnerselection = (ItemData)categorySpinnerjava.getSelectedItem(); 
String plan = spinnerselection.getPlanCategorytext(); 
0

getSelectedItem()リターンを原因

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> adapterView, View view, int pos, long l) { 
      String selectedText=list.get(pos).getPlanCategorytext(); 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> adapterView) { 

     } 
    }); 

ORリストは、スピナーでデータを取り込むために上記の使用にItemDataとArrayListのある

String selectedItemText=list.get(spinner.getSelectedItemPosition()).getPlanCategorytext(); 

String spinnerselection = categorySpinnerjava.getSelectedItem().toString(); 

あなたはこれが動作するlist.get(spinner.getSelectedItemPosition()).getPlanCategorytext();

関連する問題