XMLなしでAndroidでスピナーを取得する方法
-
26-10-2019 - |
質問
私のアプリでは、aにスピナーが必要です Button
動的に読み込まれた値でクリックします。私の必要性は、XMLファイルにあることです。スピナーコントロールを使用しないでください。 ボタンをクリックしてXMLなしでスピナーを表示する必要があります。
次のコードを使用しますが、エラーとスピナーはありませんでした。私はいくつかの行が恋しいことを知っています。私を助けてください。
私のコード:
Showspinnerはボタンコントロールです。
myonitemselectedlisteneはoncreateの外側です(..) 方法。
import java.util.Calendar;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.Spinner;
import android.widget.Toast;
public class DynamicSpinnerActivity extends Activity {
/** Called when the activity is first created. */
Button b;
LinearLayout linearLayout1;
String years[] = new String[12];
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
b = (Button) findViewById(R.id.button1);
linearLayout1 = (LinearLayout) findViewById(R.id.linearLayout1);
b.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Toast.makeText(DynamicSpinnerActivity.this, "sdfsdf", Toast.LENGTH_SHORT).show();
// Log.e("tag", "msg");
Spinner spinnner = new Spinner(DynamicSpinnerActivity.this);
int thisYear = Calendar.getInstance().get(Calendar.YEAR);
for (int i = 0; i < 12; i++) {
years[i] = Integer.toString(thisYear);
thisYear = thisYear + 1;
}
Log.e("tag", "msg"+years.length);
ArrayAdapter<String> expYearAdapter = new ArrayAdapter<String>(DynamicSpinnerActivity.this, android.R.layout.simple_spinner_item, years);
expYearAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinnner.setAdapter(expYearAdapter);
// linearLayout1.addView(spinnner);
spinnner.performClick();
spinnner.setOnItemSelectedListener(new MyOnItemSelectedListener());
}
});
}
public class MyOnItemSelectedListener implements OnItemSelectedListener {
public void onItemSelected(AdapterView<?> parent,View view, int pos, long id) {
Toast.makeText(parent.getContext(), "The planet is " +parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG).show();
Log.e("values", parent.getItemAtPosition(pos).toString());
}
public void onNothingSelected(AdapterView parent) {
// Do nothing.
}
}
}
解決
使用して表示できます spinnner.performClick();
しかし、@jitendra Sharmaの方法はより良いです
他のヒント
スピナーを作成しましたが、スピナーを保持するLLHOLDERがいる場合のように、このレイアウトを画面上のコンテンツに追加する必要もあります。
llHolder.addView(spinner);
デフォルトよりもスピナーを表示したくない場合は、ボタンクリックで表示されて表示されます。
所属していません StackOverflow