사용자가 특정 행을 선택하면 해당 행을 자세히 설명하는 새 활동을 열어야하는 ResultsAdapter라는 사용자 지정 ArrayAdapter가 있습니다. 이것은 내가 사용하는 어댑터가 단순한 ArrayAdapter 였을 때 효과적 이었지만 확장되고 각 행에 여러 개의 데이터 조각을 허용하기 위해 자체적으로 만들었 기 때문에 각 행의 클릭에 응답하는 기능이 사라졌습니다.사용자 지정 ArrayAdapter가 ListFragment 행을 클릭에 응답하지 않게했습니다.
onClickListener
을 지정해야하고 고객 어댑터에서 수행해야 할 작업이 무엇인지 구체적으로 설명하지는 못했습니다. 이전에는 대부분의 "클릭 가능성"이 내가 사용하는 맞춤 ListFragment에서 처리되었습니다. 여기
public class ResultsAdapter extends ArrayAdapter<String> {
Context myContext;
public ResultsAdapter(Context context, int textViewResourceId) {
super(context, textViewResourceId);
myContext = context;
}
@Override
public View getView(int position, View convertView, ViewGroup parent){
if(convertView == null){
convertView = LayoutInflater.from(getContext()).inflate(R.layout.row, null); //must be overall layout
}
convertView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//this is where the clicking actions need to be defined, right?
}
});
TextView venName = (TextView) convertView.findViewById(R.id.rowName);
TextView venAddress = (TextView) convertView.findViewById(R.id.rowAdd);
venName.setText(VenueList.getVenueName(position));
venAddress.setText(VenueList.getVenueAddress(position));
return convertView;
}
}
그리고 여기에 사용자 정의 ListFragment 클래스의 :
public class ListFragmentClickable extends ListFragment{
private OnItemSelectedListener listener;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_results, container, false);
return view;
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
updateDetail(position);
}
public interface OnItemSelectedListener {
public void onItemSelected(String name, String geo, String id, String address);
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
if (activity instanceof OnItemSelectedListener) {
listener = (OnItemSelectedListener) activity;
} else {
throw new ClassCastException(activity.toString()
+ " must implement ListFragmentClickable.OnItemSelectedListener");
}
}
public void updateDetail(int position) {
// Get data from VenueList
String name = VenueList.getVenueName(position);
String geo = VenueList.getVenueGeo(position);
String id = VenueList.getVenueId(position);
String address = VenueList.getVenueAddress(position);
listener.onItemSelected(name, geo, id, address);
}
}
는 사람이 날 지점 도움이 될 수 클릭하는 기능이 손실 된 이유는 무엇입니까? 어떻게 복원 할 수 있습니까?
감사합니다.