我的布局有2个列表,控制器有Listfragment
。
当我点击第一个@android/id:list
检测确定点击时,但是当我点击第二个列表时,不会检测到任何内容。
我需要在另一边实施吗?
这是我的代码:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_tab_order_workouts, container, false);
worksListView = (ListView) rootView.findViewById(R.id.lvWorks);
return rootView;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
initCategoryList();
worksListView.addHeaderView(getActivity().getLayoutInflater().inflate(R.layout.work_header, null));
worksListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(getActivity(),"hol",Toast.LENGTH_SHORT).show();
}
});
}
private void initCategoryList() {
ArrayList<Company> companies = VirteuApplication.getInstance().getCompanies();
Order currentOrder = VirteuApplication.getInstance().getOrder();
for (Company company : companies) {
if (company.getCompany().toLowerCase().equals(currentOrder.getCompany().toLowerCase())) {
companySelected = company;
AbstractAdapter adapter = new ParentWorkinfoDataAdapter(this.getActivity().getApplicationContext(), company.getWorktypesNames());
setListAdapter(adapter);
break;
}
}
}
编辑: 我使用以下代码更改了ListFragment for fragment:
public class OrderAddWorkCategoryFragment extends Fragment {
private Company companySelected = null;
private ListView worksListView;
private ListView categoriesListView;
private GetWorksForCompanyApiCall getWorksApiCall;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_tab_order_workouts, container, false);
categoriesListView = (ListView) rootView.findViewById(R.id.lvCategories);
worksListView = (ListView) rootView.findViewById(R.id.lvWorks);
return rootView;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
initCategoryList();
worksListView.addHeaderView(getActivity().getLayoutInflater().inflate(R.layout.work_header, null));
}
private void initCategoryList() {
ArrayList<Company> companies = VirteuApplication.getInstance().getCompanies();
Order currentOrder = VirteuApplication.getInstance().getOrder();
for (Company company : companies) {
if (company.getCompany().toLowerCase().equals(currentOrder.getCompany().toLowerCase())) {
companySelected = company;
AbstractAdapter adapter = new ParentWorkinfoDataAdapter(this.getActivity().getApplicationContext(), company.getWorktypesNames());
categoriesListView.setAdapter(adapter);
categoriesListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
ParentWorkinfoDataAdapter.viewHolder vHolder = (ParentWorkinfoDataAdapter.viewHolder) view.getTag();
String workName = vHolder.getTextValue();
getWorks(workName);
getWorksApiCall.execute();
}
});
break;
}
}
}
private void initWorksLists(List<Work> works) {
AbstractAdapter adapter = new ChildWorkinfoDataAdapter(getActivity(), works, R.layout.list_row_detail);
worksListView.setAdapter(adapter);
worksListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(getActivity(), "hol", Toast.LENGTH_SHORT).show();
}
});
}
private void getWorks(String workname) {
getWorksApiCall = new GetWorksForCompanyApiCall(getActivity(), companySelected.get_id(), workname, new ApiResponseListener() {
@Override
public void success(Object value) {
Gson gson = new Gson();
Worktypes[] worktypes = gson.fromJson(value.toString(), Worktypes[].class);
List<Work> works = new ArrayList<Work>();
if (worktypes.length > 0 && worktypes[0].getWorktypes().get(0).getWorks() != null) {
works = worktypes[0].getWorktypes().get(0).getWorks();
}
initWorksLists(works);
}
@Override
public void error(ApiException e) {
}
});
getWorksApiCall.execute();
}
}
但是worksListView不会检测到点击。
答案 0 :(得分:0)
ListFragment
只是一个普通Fragment
,它会使ListView
的布局膨胀,并在ProgressBar
处于可见状态时显示ListView
。
为什么不使用普通片段,并根据需要自定义包含两个ListView
的布局,然后为listwiew声明两个ListView
变量并设置OnItemClick或无论听众如何?