Ich habe versucht, eine ListView mit einem benutzerdefinierten Adapter in einem Dialogfeld Fragment zu erstellen. Das Problem ist, dass die Listview nicht im Fragment angezeigt wird. Wenn ich die Ansicht in die Hauptaktivität platziere, werden die Liste + ihre Elemente angezeigt. Maby jemand weiß, was mit meinem Code falsch ist:Xamarin.Android ListView in DialogFragment wird nicht angezeigt
MainActivity class
public class MainActivity : Activity
{
private List<string> serialNumbers = new List<string> { "test1", "test2" };
private SerialDialog dialog = new SerialDialog();
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);
dialog.Show(FragmentManager, "SerialDialog");
}
}
SerialDialog class
class SerialDialog : DialogFragment
{
private View view = null;
private List<string> serialNumbers = new List<string> { "test" };
private ListView listView;
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
base.OnCreateView(inflater, container, savedInstanceState);
view = inflater.Inflate(Resource.Layout.EnterSerial, container, false);
listView = view.FindViewById<ListView>(Resource.Id.SerialListView);
listView.Adapter = new CustomAdapter(Activity, serialNumbers);
return view;
}
public override void OnActivityCreated(Bundle savedInstanceState)
{
Dialog.Window.RequestFeature(WindowFeatures.NoTitle);
base.OnActivityCreated(savedInstanceState);
}
}
CustomAdapter Klasse
public class CustomAdapter : BaseAdapter<string>
{
private List<string> items = new List<string>();
private Activity context;
public override string this[int position]
{
get
{
return items[position];
}
}
public override int Count
{
get
{
return items.Count();
}
}
public CustomAdapter(Activity context, List<string> items) : base()
{
this.context = context;
this.items = items;
}
public void Add(string item)
{
items.Add(item);
NotifyDataSetChanged();
}
public override long GetItemId(int position)
{
return 0;
}
public override View GetView(int position, View convertView, ViewGroup parent)
{
return null;
}
}
EnterSerial.axml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:minWidth="25px"
android:minHeight="25px"
android:background="@android:color/background_light">
<ListView
android:minWidth="25px"
android:minHeight="25px"
android:layout_width="match_parent"
android:layout_height="200.5dp"
android:id="@+id/SerialListView"
android:layout_marginBottom="0.0dp" />
</LinearLayout>
benutzte ich ein BaseAdapter, weil ich später Elemente hinzufügen müssen. Das DialogFragment ist leer. Das Debugging zeigt, dass sich die Elemente in der Liste befinden.
danke, das hat mein Problem behoben –