Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在警报对话框中实现自定义listview_Java_Android_Listview_Android Alertdialog_Custom Lists - Fatal编程技术网

Java 在警报对话框中实现自定义listview

Java 在警报对话框中实现自定义listview,java,android,listview,android-alertdialog,custom-lists,Java,Android,Listview,Android Alertdialog,Custom Lists,我正在警报对话框中实现自定义列表视图。向自定义适配器添加java.util.ArrayList无法应用于java.util.list时,列表中显示了错误 我创建了一个查询来从表中获取标题列表。我想在警报对话框中显示此列表 怎么了 selectTable.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int se

我正在警报对话框中实现自定义列表视图。向自定义适配器添加java.util.ArrayList无法应用于java.util.list时,列表中显示了错误

我创建了一个查询来从表中获取标题列表。我想在警报对话框中显示此列表

怎么了

selectTable.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            int selected = 0;

            TimeTableHelper th = new TimeTableHelper(getApplicationContext());
            final List<String> tables = new ArrayList<String>(th.getTitle());

            AlertDialog.Builder alertDialog = new AlertDialog.Builder(AddEventActivity.this);
            LayoutInflater inflater = getLayoutInflater();
            View convertView = (View) inflater.inflate(R.layout.alertlistrow, null);
            alertDialog.setView(convertView);
            ListView lv = (ListView) convertView.findViewById(R.id.listView1);

            adapter=new CustomAlertAdapter(AddEventActivity.this, tables);
            lv.setAdapter(adapter);

            alertDialog.setSingleChoiceItems(adapter,selected,
                    new DialogInterface.OnClickListener() {

                        public void onClick(DialogInterface dialog, int item) {

                            ListView lw = ((AlertDialog)dialog).getListView();
                            Object checkedItem = lw.getAdapter().getItem(lw.getCheckedItemPosition());

                            txtTable.setText(String.valueOf(checkedItem));
                            dialog.dismiss();
                        }
                    });
            alertDialog.show();

        }
    });
selectTable.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
选定的整数=0;
TimeTableHelper th=新的TimeTableHelper(getApplicationContext());
最终列表表=新的ArrayList(th.getTitle());
AlertDialog.Builder AlertDialog=新建AlertDialog.Builder(AddEventActivity.this);
LayoutInflater充气机=getLayoutInflater();
视图转换视图=(视图)充气器。充气(R.layout.alertlistrow,null);
alertDialog.setView(convertView);
ListView lv=(ListView)convertView.findViewById(R.id.listView1);
adapter=新的CustomAlertAdapter(AddEventActivity.this,表);
低压设置适配器(适配器);
alertDialog.setSingleChoiceItems(适配器,选定,
新建DialogInterface.OnClickListener(){
公共void onClick(对话框接口对话框,int项){
ListView lw=((AlertDialog)对话框).getListView();
对象checkedItem=lw.getAdapter().getItem(lw.getCheckedItemPosition());
setText(String.valueOf(checkedItem));
dialog.dismise();
}
});
alertDialog.show();
}
});
自定义警报适配器

public class CustomAlertAdapter extends BaseAdapter{

        Context ctx=null;
        ArrayList<String> listarray=null;
        private LayoutInflater mInflater=null;
        public CustomAlertAdapter(Activity activty,ArrayList<String> list)
        {
            this.ctx=activty;
            mInflater = activty.getLayoutInflater();
            this.listarray=list;
        }
        @Override
        public int getCount() {

            return listarray.size();
        }

        @Override
        public Object getItem(int arg0) {
            return null;
        }

        @Override
        public long getItemId(int arg0) {
            return 0;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup arg2) {
            final ViewHolder holder;
            if (convertView == null ) {
                holder = new ViewHolder();
                convertView = mInflater.inflate(R.layout.alertlistrow, null);
                holder.titlename = (TextView) convertView.findViewById(R.id.textViewTitle);
                convertView.setTag(holder);
            }
            else {
                holder = (ViewHolder) convertView.getTag();
            }

            String datavalue=listarray.get(position);
            holder.titlename.setText(datavalue);

            return convertView;
        }

        private static class ViewHolder {
            TextView titlename;
        }

}
公共类CustomAlertAdapter扩展了BaseAdapter{
上下文ctx=null;
ArrayList listarray=null;
私有LayoutInflater mInflater=null;
公共CustomAlertAdapter(活动活动,ArrayList列表)
{
这个.ctx=activty;
mInflater=activty.getLayoutFlater();
this.listary=list;
}
@凌驾
public int getCount(){
返回listary.size();
}
@凌驾
公共对象getItem(int arg0){
返回null;
}
@凌驾
公共长getItemId(int arg0){
返回0;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组arg2){
最终持票人;
if(convertView==null){
holder=新的ViewHolder();
convertView=mInflater.inflate(R.layout.alertlistrow,null);
holder.titlename=(TextView)convertView.findViewById(R.id.textViewTitle);
convertView.setTag(支架);
}
否则{
holder=(ViewHolder)convertView.getTag();
}
String datavalue=listarray.get(位置);
holder.titlename.setText(数据值);
返回视图;
}
私有静态类视图持有者{
文本视图标题名;
}
}
查询:

public ArrayList<String> getTitle() {

    ArrayList<String> conList = new ArrayList<String>();


    String selectQuery = "SELECT  * FROM " + TABLE_TIME_TABLE;

    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);

    if (cursor.moveToFirst()) {
        do {

            TimeTable table = new TimeTable();

          //  table.setId(Integer.parseInt(cursor.getString(0)));
            table.setTitle(cursor.getString(1));
            conList.add(table.getTitle());
        } while (cursor.moveToNext());
    }

    return conList;
}
public ArrayList getTitle(){
ArrayList conList=新的ArrayList();
String selectQuery=“SELECT*FROM”+表格\时间\表格;
SQLiteDatabase db=this.getWritableDatabase();
Cursor Cursor=db.rawQuery(selectQuery,null);
if(cursor.moveToFirst()){
做{
时间表表=新时间表();
//setId(Integer.parseInt(cursor.getString(0));
table.setTitle(cursor.getString(1));
add(table.getTitle());
}while(cursor.moveToNext());
}
返回列表;
}

谢谢。

您的
CustomAlertAdapter
在其构造函数中采用
ArrayList
。排队

final List<String> tables = new ArrayList<String>(th.getTitle());
你能做什么

首先将
声明为
ArrayList
,或者像这样调用适配器构造函数:

adapter=new CustomAlertAdapter(AddEventActivity.this, (ArrayList<String>)tables);
adapter=新的CustomAlertAdapter(AddEventActivity.this,(ArrayList)表);

顺便说一句,虽然这对你来说很烦人,但在某些情况下,这种行为是有用的。例如,如果您需要跟踪应用程序中不同
AsyncTask
s的实例:所有这些实例都是
AsyncTask
的实例,因此您可以将它们放入列表中,并在“onStop()”中通过使用简单的foreach循环运行列表来取消所有任务。
adapter=new CustomAlertAdapter(AddEventActivity.this, (ArrayList<String>)tables);