ListFragment
ve özel bir bağdaştırıcım var.Bir adaptörden bir ListFragment içinde tanımlanan bir yöntem nasıl çağrılır?
Bağdaştırıcıdan, satırlarda tanımlanmış bir düğmeden onClick
olayını alıyorum. onClick
yönteminde bazı şeyler yapmak için ListFragment
'a geçmek istediğim bir kimlik alıyorum.
Adaptörden ListFragment
yönteminde showTask yöntemini nasıl çağırabilirim? Adaptör fragmanının bir iç sınıf olması için sadece direkt olarak yöntem çağrı böylece
listfragment
public class TaskListFragment extends ListFragment{
/* ... */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mAdapter = new TaskListAdapter(getActivity(), data);
}
@Override
public void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
setListAdapter(mAdapter);
}
public void showTask(long id) {
FragmentTransaction ft = getFragmentManager().beginTransaction();
TaskFragment taskFragment = new TaskFragment();
Bundle args = new Bundle();
args.putLong("id", id);
taskFragment.setArguments(args);
ft.replace(R.id.fragment_container, taskFragment);
ft.commit();
}
}
adaptör
public class TaskListAdapter extends ArrayAdapter<Task>{
/* ... */
private OnClickListener mOnClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
long id = (Integer) v.getTag();
// how can I call showTask(id) ?
}
};
}
Neden onClick yönteminiz adaptörde ve etkinlikte değil? –
Parçalarınızın 'IShowTask' arabirimini (showTask' yöntemine sahip) uygulamasına izin verin ve sonra adaptör' setShowTaskListener (IShowTask) 'yöntemine izin verin ... o zaman ... programcı sizsiniz, değil mi? :) – Selvin
İstediğiniz şekilde bir yanıt gönderdim, ancak her görünüm için 'OnClickListeners 'oluşturmamalısınız. ListView'ınıza bir 'OnListItemClickListener 'koymayı düşünmelisiniz. – tolgap