【发布时间】:2017-04-19 20:22:19
【问题描述】:
好的,所以基本上我有列表项(按钮)的自定义 ListView 和 onClick 我想打开一个对话框,该对话框基本上应该显示另一个 ListView。我可以查看两个列表就好了,但问题是我的对话框列表视图没有在对话框中显示列表。它只是上一个列表之上的一个透明列表。但是如果尝试设置对话框标题getDialog().setTitle("Apps List"); 我得到上面提到的错误,这意味着我在第一名没有对话框但是为什么?。
public class ProfileDialog extends android.support.v4.app.DialogFragment {
.........
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
ArrayList<String> listItemTitle = new ArrayList<String>();
listItemTitle.add("Hello");
listItemTitle.add("Hello1");
listItemTitle.add("Hello2");
listItemTitle.add("Hello3");
ArrayList<String> listItemType = new ArrayList<String>();
listItemType.add("Hello");
listItemType.add("Hello123");
listItemType.add("1234");
listItemType.add("Hello6666");
ArrayList<Integer> listItemId = new ArrayList<Integer>();
listItemId.add(1);
listItemId.add(2);
listItemId.add(3);
listItemId.add(4);
ArrayList<Profile> ProfileArrayList = new ArrayList<>();
for (int i = 0; i < listItemTitle.size(); i++) {
Profile Profile = new Profile(listItemTitle.get(i), listItemType.get(i), listItemId.get(i));
ProfileArrayList.add(Profile);
}
View profileView = inflater.inflate(R.layout.fragment_profile_dialog, container, false);
ListView profileListView = (ListView) profileView.findViewById(R.id.lstvSelectedProfile);
getDialog().setTitle("Apps List");
// ListView profileListView = (ListView) LayoutInflater.from(context).inflate(R.layout.fragment_profile_dialog, null);
if(profileListView.getParent()!=null) {
((ViewGroup) profileListView.getParent()).removeView(profileListView);
}
SelectedProfileListAdapter adapter = new SelectedProfileListAdapter(getActivity().getApplicationContext(), ProfileArrayList);
profileListView.setAdapter(adapter);
return profileListView;
}
这是我填充第二个列表的适配器。
public class SelectedProfileListAdapter extends BaseAdapter{
private LayoutInflater layoutInflater;
private List<Profile> selectedProfileList;
public SelectedProfileListAdapter(Context context, List<Profile> selectedProfileList) {
layoutInflater =(LayoutInflater) context.getSystemService(LAYOUT_INFLATER_SERVICE);
this.selectedProfileList = selectedProfileList;
// this.context = context;
}
...........
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ProfilesListAdapter.ViewHolder ProfileListViewHolder;
if (convertView == null) {
ProfileListViewHolder = new ProfilesListAdapter.ViewHolder();
convertView = layoutInflater.inflate(R.layout.adapter_profiles_list, parent, false);
ProfileListViewHolder.title = (TextView) convertView.findViewById(R.id.title);
ProfileListViewHolder.textView3 = (TextView) convertView.findViewById(R.id.textView3);
ProfileListViewHolder.imageButtonMore = (ImageButton) convertView.findViewById(R.id.imgButtonMore);
convertView.setTag(ProfileListViewHolder);
} else {
ProfileListViewHolder = (ProfilesListAdapter.ViewHolder) convertView.getTag();
}
ProfileListViewHolder.textView3.setText(selectedProfileList.get(position).getTitle());
ProfileListViewHolder.title.setText(selectedProfileList.get(position).getType());
ProfileListViewHolder.imageButtonMore = (ImageButton) convertView.findViewById(R.id.imgButtonMore);
ProfileListViewHolder.imageButtonMore.setTag(selectedProfileList.get(position).getId());
return convertView;
}
}
【问题讨论】:
-
我认为您在 DialogFragment onCreateView() 中返回了错误的视图。您重新发送了“profileListView”,它只是列表。尝试将其更改为“profileView”。希望有所帮助!
标签: android listview android-fragments android-dialogfragment