【发布时间】:2015-08-13 15:44:40
【问题描述】:
我在一个活动中有两个片段,我的第一个片段正在扩展 ListFragment 类,并且在其 xml 布局中有一个 ID 为“列表”的 ListView 小部件。我为此列表编写了一个自定义适配器并且工作正常,但我需要单击一个项目以将一些值传递给另一个片段。我猜对于 itemClick 事件,我必须使用 ListFragment 类的 onListItemClick() 方法。但是当我运行应用程序并单击列表中的项目时,什么也没发生。
public class List extends ListFragment {
private Context context;
ListAdapter listAdapter;
OnHeadlineSelectedListener mCallback;
public interface OnHeadlineSelectedListener {
public void onArticleSelected(int position);
}
@Override
public void onCreate (Bundle savedInstanceState){
super.onCreate(savedInstanceState);
KnlContainer knlModel = new KnlContainer();
listAdapter = new ListAdapter((Activity)context,knlModel);
}
@Override
public void onAttach(Activity activity){
super.onAttach(activity);
context = activity;
//I need to call this instance of interface to comminacation with Activity
try {
mCallback = (OnHeadlineSelectedListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
+ " must implement OnHeadlineSelectedListener");
}
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
// Send the event to the host activity
//for comminacation with activity
mCallback.onArticleSelected(position);
Log.e("STAT","OK");
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
LinearLayout rootView = (LinearLayout)inflater.inflate(R.layout.knl_list_fragment, null);
ListView knllrList = (ListView)rootView.findViewById(android.R.id.list);
knllrList.setAdapter(listAdapter);
return rootView;
}
}
我必须在适配器中定义 clicklistener 吗?
【问题讨论】:
标签: android android-fragments android-activity fragment