2012-07-08 49 views
0

我有编辑框我想,当点击它来显示TimePickerDialog代替键盘,而当选择时间选取器消失,时间在EditText上显示TimePickerDialog

这个EditText上显示的适配器类这样

public class TminuseistAdaptar extends ArrayAdapter<Tr> { 

    private final Context context; 
    ArrayList<Tr> TrBasics ; 

    static final int TIME_DIALOG_ID = 0; 

    CheckBox Confirm ; 
    ImageButton DialUp; 

    EditText data ; 

    public TminuseistAdaptar(Context context, int ResourceId, 
      ArrayList<Tr> items) 
    { 


     super(context, ResourceId, items); 
     this.context = context; 
     this.TrBasics = items ; 

    } 

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

} 
} 

我不喜欢的东西,对于EDITTEXT

textViewEncounterType = (EditText) rowView.findViewById(R.id.TminuseTime); 
     textViewEncounterType.setText(TreatementMinuseObject.TBasic.TreatementTime); 
     textViewEncounterType.setTag(position); 



     textViewEncounterType.setClickable(true); 
     textViewEncounterType.setInputType(InputType.TYPE_NULL); 

     textViewEncounterType.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 

       new TimePickerDialog(context, mTimeSetListener, hour, minute, false); 

      } 
     }); 

,但没有出现,我把这个适配器类在其他类扩展Fragement

public class TminusList extends Fragment { 

问候

+0

看一看这里http://stackoverflow.com/questions/8383550/timepicker-dialog – vasart 2012-07-08 13:41:01

+0

看看这些链接http://www.mkyong.com/android/android -time-picker-example /,http://androidexam.blogspot.in/2011/09/android-time-picker-dialog-example.html,http://thesarmad.blogspot.in/2009/12/time- picker-example-android.html – Deepak 2012-07-08 13:43:28

+0

如果我在适配器中,我的意思是类继承ArrayAdapter AMH 2012-07-08 14:26:20

回答

4

你可以做这样的事情(用于片实现):

startTxt = (EditText) v.findViewById(R.id.joindate); 
startTxt.setClickable(true); 
startTxt.setInputType(InputType.TYPE_NULL); 

startTxt.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     DialogFragment newFragment = new TimeDialog(); 
     newFragment.show(getFragmentManager(), "dialog"); 
    } 
}); 

而且TimeDialog:

public class TimeDialog extends DialogFragment { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
    } 

    public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
     // Set your view 
    } 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     return new TimePickerDialog(getActivity(), this, hour, minute, false);  } 
} 

此代码将导致的EditText框弹出timepicker对话框而不是键盘(一旦你放入了timepicker对话框代码)。

请注意,您需要在XML中使用android:focusableInTouchMode="false"来设置EditText(在上面的示例中它将是EditText,其编号为joindate),否则需要两次点击才能打开对话框。

+0

onTouch会在onClick之前触发,所以键盘将在这种情况下打开。 – 2012-07-08 14:22:34

+0

如何显示dialoge中如果我在适配器中,我的意思是class继承自ArrayAdapter ,我不能说showdialoge(0 ); – AMH 2012-07-08 14:26:46

+0

@M Mohsin Naeem,恐怕不是。请参阅'startTxt.setInputType(InputType.TYPE_NULL)行''?这意味着没有键盘。我在我的一个应用程序中使用了这个确切的代码,它弹出我的日期对话框对话框,没有任何提示键盘出现。 – Barak 2012-07-08 14:35:45

2

尝试

startTxt.setOnTouchListener(new OnTouchListener() { 

      @Override 
      public boolean onTouch(View arg0, MotionEvent arg1) { 
       // TODO Auto-generated method stub 
       //show DateTimepicker 
       return true; //very important in your case if you return false keayboard will open 
      } 
     }); 
+0

问题是如何显示dialoge如果我在适配器,我的意思是类继承ArrayAdapter ,我不能说showdialoge(0); – AMH 2012-07-08 14:27:18

+0

您可以用'新DatePickerDialog(背景下, \t \t \t \t \t \t \t \t datePickerListener,2012,10,10).show();'我想你在这里传递上下文.. \t \t \t \t \t \t ' – 2012-07-08 14:39:10

+0

你是否可以看到我更新的问题,我添加了你说但不出现dialoge – AMH 2012-07-08 15:03:33