0
我正在警報對話框中實現自定義列表視圖。當向定製適配器添加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();
}
});
CustomAlertAdapter
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;
}
}
查詢:
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;
}
謝謝。
順便說一句,而你現在在有些情況下這種行爲是非常有用的很是煩人。例如,如果您需要跟蹤應用程序中不同'AsyncTask'的實例:它們都是'AsyncTask'的實例,因此您可以將它們放入列表中並在「onStop()」中取消所有任務通過簡單的foreach循環遍歷List。 – 0X0nosugar