I have an application where I would want to display a custom list view consisting of two textViews inside a custom dialog box in android. So far, I'm having a difficult time figuring out how to connect the two and generate the contents of the dialog box.
I tried to follow custom listView tutorials with the hopes of just setting the dialog adapter to it but to no avail.
So far, this is what I have so far:
This is list_row_dialog.xml, the layout for the row containing two textviews:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:minHeight="50dp"
android:orientation="horizontal"
android:padding="5dip" >
<TextView
android:id="@+id/unit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:typeface="sans" />
<TextView
android:id="@+id/quantity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:textColor="#343434"
android:textSize="12sp" />
</RelativeLayout>
And here is the dialog_main.xml file, the layout file that I want the dialog box to use, it's basically a listView.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ListView
android:id="@+id/custom_list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:dividerHeight="1dp" />
</LinearLayout>
And here's CustomListAdapterDialog.java, I'm not sure if I even need to use this to display data on the dialog box:
public class CustomListAdapterDialog extends BaseAdapter {
private ArrayList<ItemClass> listData;
private LayoutInflater layoutInflater;
public CustomListAdapterDialog(Context context, ArrayList<ItemClass> listData) {
this.listData = listData;
layoutInflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
return listData.size();
}
@Override
public Object getItem(int position) {
return listData.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = layoutInflater.inflate(R.layout.list_row_dialog, null);
holder = new ViewHolder();
holder.unitView = (TextView) convertView.findViewById(R.id.unit);
holder.quantityView = (TextView) convertView.findViewById(R.id.quantity);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.unitView.setText(listData.get(position).getVariant().toString());
holder.quantityView.setText(listData.get(position).getUnit().toString());
return convertView;
}
static class ViewHolder {
TextView unitView;
TextView quantityView;
}
}
Initially, I tried this code to display the dialog box:
private void showDialog(){
final Dialog dialog = new Dialog(this);
dialog.setContentView(R.layout.dialog_main);
dialog.show();
}
But it only shows, one blank row, it is very clear that I am not populating it properly.
Any ideas anyone? Also, I can populate the dialog boxes in the showDialog()
function since I also have the data I want to populate with in the same java class.
Are you doing the following? You will need to inflate the layout file dialog_main
, find the ListView
, set an adapter and an OnItemClickListener for it. After this, you can use the dialog's setContentView(View)
method to get the list to display.
private void showDialog(){
final Dialog dialog = new Dialog(this);
View view = getLayoutInflater().inflate(R.layout.dialog_main, null);
ListView lv = (ListView) view.findViewById(R.id.custom_list);
// Change MyActivity.this and myListOfItems to your own values
CustomListAdapterDialog clad = new CustomListAdapterDialog(MyActivity.this, myListOfItems);
lv.setAdapter(clad);
lv.setOnItemClickListener(........);
dialog.setContentView(view);
dialog.show();
}
By the way, your adapter looks alright. It isn't working because you're not giving it anything to work on.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With