【发布时间】:2017-03-22 23:16:45
【问题描述】:
我有一个微调器,当用户选择一个值时,onItemSelectedListener 会打开一个对话框来放置更多详细信息
private AdapterView.OnItemSelectedListener spinnerListeners=new AdapterView.OnItemSelectedListener(){
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
switch (parent.getId()){
case R.id.puttSpinner:
// open dialog to enter Additional putt Stats
if(position > 0 ) {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(v.getContext());
LinearLayout layout = new LinearLayout(v.getContext());
LinearLayout.LayoutParams parms = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);layout.setOrientation(LinearLayout.VERTICAL);layout.setLayoutParams(parms);
layout.setGravity(Gravity.CLIP_VERTICAL);
layout.setPadding(2, 2, 2, 2);
for (int i=1;i<position+1;i++){
LinearLayout ll = new LinearLayout(v.getContext());
LinearLayout.LayoutParams llp = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
ll.setOrientation(LinearLayout.HORIZONTAL);
ll.setLayoutParams(llp);
TextView tv = new TextView(v.getContext());
tv.setText("Putt "+String.valueOf(i)+":");
tv.setPadding(40, 40, 40, 40);
tv.setGravity(Gravity.CENTER);
tv.setTextSize(20);
LinearLayout.LayoutParams tvParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
tvParams.bottomMargin = 5;
//ll.addView(tv,tvParams);
ll.addView(tv);
Spinner s = new Spinner(v.getContext());
String[] puttDistList = getResources().getStringArray(R.array.putt_dist_list);
s.setAdapter(new ArrayAdapter<String>(v.getContext(),R.layout.putting_practice, puttDistList));
s.setOnItemSelectedListener(puttDistSelectListener);
LinearLayout.LayoutParams sParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
ll.addView(s,sParams);
layout.addView(ll);
}
alertDialog.setView(layout);
alertDialog.setTitle("Putting Stats - Distance to Pin");
alertDialog.setNegativeButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
alertDialog.show();
}
break;
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
};
现在,当用户从 Dialog Spinner s 中选择值时,它的侦听器会使用用户输入更新数据库,但我如何获取与此微调器关联的 TextView tv 的文本值
TextView 和 Spinner 都包含在父布局“布局”中动态创建的线性布局“ll”中。两者都是动态创建的
提前致谢
final AdapterView.OnItemSelectedListener puttDistSelectListener = new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
//add the putt# and distance to temp_putt_stats table
DbAdapter adapter = new DbAdapter(view.getContext());
String distValue = parent.getItemAtPosition(position).toString();
switch (position){
case 0: //Inches
break;
case 1: //<3ft
break;
case 2: //<6 ft
break;
case 3: //<10 ft
break;
case 4: //10-20
break;
case 5: //20-30
break;
case 6: //30-40
break;
case 7: //> 40
break;
}
Toast.makeText(view.getContext(), "Position :"+position+" ListItem : " +distValue ,Toast.LENGTH_SHORT).show();
}
【问题讨论】:
标签: android android-layout onitemselectedlistener