2016-10-14 11 views
1

JSONからデータを取得するカテゴリのリストを持つSpinnerがあります。私がしたいのは、以外のアイテムがすべてカテゴリになると、サブカテゴリの別のスピナーが表示され、そのカテゴリに従ってJSONのデータがロードされます。getSelectedItem Spinnerから応答がありません

以前はそれをやっていましたが、数日間放置してから他の部分を行っても、もう機能しません。

スピナーに最初にロードされたのはすべてのカテゴリであるため、setOnItemSelectedListener()とhid subcategorySpinnerがトリガーされました。他の項目が選択された場合は、subcategorySpinnerは表示されません。

コードロジックに問題がありますか?助けてください。

categorySpinner = (Spinner) rootView.findViewById(R.id.categorySpinner); 
ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(getActivity().getApplicationContext(), R.layout.spinner_item, categoryList); 
adapter2.setDropDownViewResource(R.layout.spinner_dropdown_item); 
categorySpinner.setAdapter(adapter2); 

categorySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
@Override 
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
categoryString = categorySpinner.getSelectedItem().toString().replace(" ", "%20"); 
if (categorySpinner.getSelectedItem().toString().equals("All Category")) { 
    Log.d("debug", "all category"); 
    subcategorySpinner.setVisibility(View.GONE); 
} else { 
    Log.d("debug", "other than all category"); 
    subcategorySpinner.setVisibility(View.VISIBLE); 
    generateSubcategorySpinner(Config.GET_SUBCATEGORY_URL+"?category="+categoryString); 
} 
} 


}); 
+0

ログを取得しましたか? –

+0

@HRavalあなたはそれをコメントしていますか? – August

+0

@SathishKumarJ「すべてのカテゴリ」のログを取得するだけです – August

答えて

0

私は論理的に何をしているのか分かりませんが、これはそれほど違いはないようですが、これで解決しました。ああ、何とかボートを浮かべて、私は思います。

H Ravalの提案を使用して、私はif elseをメソッドに移動しました。今は私が望むように動作します。

categorySpinner = (Spinner) rootView.findViewById(R.id.categorySpinner); 
       ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(getActivity().getApplicationContext(), R.layout.spinner_item, categoryList); 
       adapter2.setDropDownViewResource(R.layout.spinner_dropdown_item); 
       categorySpinner.setAdapter(adapter2); 
       String str = categorySpinner.getSelectedItem().toString(); 
       Log.d("debug", "str "+str); 

       categorySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
        @Override 
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
         categoryString = parent.getItemAtPosition(position).toString(); 
         Log.d("debug", categoryString+"..."+position); 

         subCategorySpinnerView(categoryString); 
        } 
       }); 

private void subCategorySpinnerView(String categoryString) { 

    if (categoryString.equals("All Category")) { 
     Log.d("debug", "all category"); 
     subcategorySpinner.setVisibility(View.GONE); 
    } else { 
     Log.d("debug", "other than all category"); 
     subcategorySpinner.setVisibility(View.VISIBLE); 

     categoryString = categoryString.replace(" ", "%20"); 
     generateSubcategorySpinner(Config.GET_SUBCATEGORY_URL+"?category="+categoryString); 
    } 

} 
0

categorySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
@Override 
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 


// On selecting a spinner item 
categoryString = parent.getItemAtPosition(position).toString(); 
Log.d("debug", categoryString+"..."+position); 

if (categoryString.equals("All Category")) { 
    Log.d("debug", "all category"); 
    subcategorySpinner.setVisibility(View.GONE); 
} else { 
    Log.d("debug", "other than all category"); 
    subcategorySpinner.setVisibility(View.VISIBLE); 

    categoryString = categoryString.replace(" ", "%20") 
    generateSubcategorySpinner(Config.GET_SUBCATEGORY_URL+"?category="+categoryString); 
} 
} 
0

をお試しください

の代わりに、 categoryString = parent.getItemAtPosition(position).toString();

likeを使用できます。 categoryString = position.toString();

+0

まだ同じ出力 – August

1

変更をあなたのコードを試してみてください、このコードスニペット

Spinner dropdown = (Spinner) findViewById(R.id.type); 
final String[] items = new String[]{"SELECT TYPE OF OFFER","PERCENTAGE", "AMOUNT", "ITEM"}; 
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.spinner_item, items); 
dropdown.setAdapter(adapter); 
String selectedItem = dropdown.getSelectedItem().toString(); 
+0

は同じです。そのアイテムが選択された後でもう一度実行されなかった場合(他のログインを取得しなかった場合) – August

+0

上記のコードを実行して、選択内容を変更した後に何がログに記録されるのか教えてください。 –

+0

まだ同じ出力 – August

0

あなたが直接使う、引数(位置)を使用することができますこの

categorySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
@Override 
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 


// On selecting a spinner item 
     categoryString = parent.getItemAtPosition(position).toString().replace(" ", "%20"); 



if (categoryString.equals("All Category")) { 
    Log.d("debug", "all category"); 
    subcategorySpinner.setVisibility(View.GONE); 
} else { 
    Log.d("debug", "other than all category"); 
    subcategorySpinner.setVisibility(View.VISIBLE); 
    generateSubcategorySpinner(Config.GET_SUBCATEGORY_URL+"?category="+categoryString); 
} 
} 
関連する問題