Pickers를 사용하는 방법을 배우고 있으며 View를 DatePickerFragment로 전달하는 데 문제가 있습니다. 다음은 샘플 전체 프로젝트 소스 파일에 github의 링크입니다 : 여기 https://github.com/MienTommy/DatePickerFragmentDatePickerFragment에서보기를 전달하는 방법은 무엇입니까? ListView 및 ArrayAdapter 사용
그리고는 TODO 부분에 DatePickerFragment
package com.mienapps.datepickerfragment;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.DatePicker;
import android.widget.TextView;
import java.util.Calendar;
import java.util.List;
public class CustomAdapter extends ArrayAdapter<TextView>
{
Activity mContext;
public CustomAdapter(Activity context, List<TextView> views)
{
super(context, 0, views);
mContext = context;
}
/*Get view from adapter*/
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
View itemView = convertView;
if (convertView == null)
{
itemView = LayoutInflater.from(getContext()).inflate(R.layout.list_item, parent, false);
}
TextView datePickerView = (TextView) itemView.findViewById(R.id.date_picker);
datePickerView.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view)
{
DialogFragment newFragment = new DatePickerFragment();
newFragment.show(mContext.getFragmentManager(), "datePicker");
}
});
return itemView;
}
/*Time Picker*/
public static class DatePickerFragment extends DialogFragment
implements DatePickerDialog.OnDateSetListener {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the picker
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
// Create a new instance of DatePickerDialog and return it
return new DatePickerDialog(getActivity(), this, year, month, day);
}
public void onDateSet(DatePicker view, int year, int month, int day) {
//TODO: set itemView to the date that is picked. However I can't access it from here.
}
}
}
를 구현하는 소스가된다, 그래서 내가 텍스트를 설정할 수 있습니다 itemView에 액세스하려면 사용자가 선택한 날짜로 변경됩니다. TextView는 ListView의 일부이므로 findViewById를 사용하여 TextView를 참조 할 수 없습니다.
당신은 textview의 목록을 가지고 있습니다. 그런 다음 datepicker에서 날짜를 선택하면보기로 날짜를 설정 하시겠습니까? – Raghunandan
네, 그렇게하고 싶습니다. –
인터페이스를 콜백으로 사용하고 getter setter와 함께 모델 클래스를 사용하고 어댑터에서 notifyDateSetChanged를 호출하여 어댑터에서 뷰를 업데이트 할 수 있습니다. – Raghunandan