0

クリックするとキーボードの代わりに 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);

            }
        });

しかし、何も表示されません。別のクラスでこのアダプター クラスを呼び出します。

public class TminusList   extends Fragment {

よろしくお願いします

4

2 に答える 2

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 ボックスがキーボードの代わりにタイムピッカー ダイアログをポップします (タイムピッカー ダイアログ コードを入力すると)。

XML で EditText (上記の例では ID を持つ EditText joindate)を設定する必要があることに注意してください。そうandroid:focusableInTouchMode="false"しないと、ダイアログを開くのに 2 回のクリックが必要になります。

于 2012-07-08T14:18:01.770 に答える
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
            }
        });
于 2012-07-08T14:21:48.397 に答える