[英]how to add custom ListView in alert dialog android
我有一個場景,當我點擊Button
我想要彈出AlertDialog
。 AlertDialog
是一個自定義警報對話框,因為它具有自定義Listview
。
我使用以下代碼分配AlertDialog
OnClick
按鈕
top.setOnClickListener(new OnClickListener() {
Context mcontext;
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
LayoutInflater li = LayoutInflater.from(getActivity());
View view= li.inflate(R.layout.topingslist, null);
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getActivity());
alertDialogBuilder.setView(view);
ListView lv2 = (ListView) getActivity().findViewById(R.id.toplist);
ArrayList<SearchResultsToping> results1 = new ArrayList<SearchResultsToping>();
SearchResultsToping sr1;
sr1 = new SearchResultsToping();
sr1.setToppingname("cheese");
results1.add(sr1);
MyCustomBaseAdapterTop arrayAdapter=new MyCustomBaseAdapterTop(getActivity(), results1);
lv2.setAdapter(arrayAdapter);
lv2.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
// TODO Auto-generated method stub
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
alertDialogBuilder
.setCancelable(false)
.setPositiveButton("OK",new DialogInterface.OnClickListener()
public void onClick(DialogInterface dialog,int id) {
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
dialog.cancel()
}
});
// create alert dialog
AlertDialog alertDialog = alertDialogBuilder.create();
// show it
alertDialog.show();
}
});
這是我對customlistview的customBaseadapter
public class MyCustomBaseAdapterTop extends BaseAdapter {
private static ArrayList<SearchResultsToping> searchArrayListtop;
private LayoutInflater mInflater;
Context ctx=null;
public MyCustomBaseAdapterTop(Activity activty, ArrayList<SearchResultsToping> results1) {
searchArrayListtop = results1;
this.ctx=activty;
mInflater = activty.getLayoutInflater();
}
@Override
public int getCount() {
// TODO Auto-generated method stub
// return 0;
return searchArrayListtop.size();
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
//return searchArrayListtop.get(arg0);
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int arg0, View convertView, ViewGroup arg2) {
// TODO Auto-generated method stub
final ViewHolder holder;
if (convertView == null) {
Log.d("base", "listbase");
convertView = mInflater.inflate(R.layout.each_toping, null);
holder = new ViewHolder();
holder.txttopname = (TextView) convertView.findViewById(R.id.topname);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.txttopname.setText(searchArrayListtop.get(arg0).getToppingname());
return convertView;
}
static class ViewHolder {
TextView txttopname;
}
}
這是topinglist.xml文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ListView
android:id="@+id/toplist"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:cacheColorHint="#0000"
android:divider="@android:color/transparent"
android:dividerHeight="0dp" />
</LinearLayout>
我將Adapter
設置為Listview
lv2.setAdapter(arrayAdapter);
給我NullPointerException
請幫我實現這個。
在警報對話框構建器中更改以下行
ListView lv2 = (ListView) getActivity().findViewById(R.id.toplist);
同
ListView lv2 = (ListView) view.findViewById(R.id.toplist);
將listview添加到其中設置適配器。 並做任何你想做的事
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.