2016-03-06 80 views
0

我想用自定义列表视图创建警报对话框。为此,我为列表视图创建了自定义布局和适配器。 我想单选项目的警报对话框。所以我在对话框中设置了一个适配器。现在我想从数组列表中选择项目?带自定义列表视图的警报对话框

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

       final TimeTable table = new TimeTable(); 

       List<TimeTable> allTables = new ArrayList<TimeTable>(); 

       TimeTableHelper timeTableHelper = new TimeTableHelper(AddEventActivity.this); 

       allTables = timeTableHelper.getAllTables(); 



       allTables.add(table); 

       final List<TimeTable> t = th.getAllTables(); 
       for (TimeTable cn : allTables) { 
        String log = "Id: " + cn.getId() + " ,Title: " + cn.getTitle() + 
          "Status: " + cn.getStatus() + ",Color: " + cn.getTableColor(); 

        Log.d("Data ", log); 
       } 
       final AlertDialog.Builder alertDialog = new AlertDialog.Builder(AddEventActivity.this); 
       LayoutInflater inflater = getLayoutInflater(); 
       View convertView = (View) inflater.inflate(R.layout.tablelist, null, false); 

       lv = (ListView) convertView.findViewById(R.id.tableslist); 

       final CustomAlertAdapter adapter = new CustomAlertAdapter(allTables, AddEventActivity.this); 


       alertDialog.setView(convertView); 

            alertDialog.setView(customView); 

       alertDialog.setSingleChoiceItems(adapter, selected, new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 


         final List<TimeTable> tables = new ArrayList<TimeTable>(); 

         // what to do here to get item of TimeTable list? 
        } 
       }); 

       alertDialog.show(); 
      } 
     }); 

编辑:

  alertDialog.setSingleChoiceItems(adapter, selected, new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog,int which) { 


        TimeTable selectedItem = allTables.get(which); 

        selectedItem.getId(); 
        txtTable.setText(selectedItem.getTitle()); 
        Log.d("TableId", String.valueOf(selectedItem)); 

        dialog.dismiss(); 

       } 
      }); 

      alertDialog.show(); 
     } 

customAlertAdapter

public class CustomAlertAdapter extends BaseAdapter{ 


     List<TimeTable> mData; 
     Context mContext; 
     LayoutInflater inflater; 
     public CustomAlertAdapter(List<TimeTable> data, Context context) { 
      mData = data; 
      mContext = context; 
      inflater = LayoutInflater.from(context); 
     } 
     @Override 
     public int getCount() { 
      return mData.size(); 
     } 

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

     @Override 
     public long getItemId(int arg0) { 
      // TODO Auto-generated method stub 
      return 0; 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 

      if (convertView == null) { 

       LayoutInflater mInflater = (LayoutInflater) mContext 
         .getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 

       convertView = mInflater.inflate(R.layout.alertlistrow, null); 

      } 

      TextView tvTitle = (TextView) convertView.findViewById(R.id.tableTitle); 
      Button color = (Button)convertView.findViewById(R.id.selectColor); 


      tvTitle.setText(mData.get(position).getTitle()); 

      ((GradientDrawable)color.getBackground()).setColor(mData.get(position).getTableColor()); 

      return convertView; 
     } 

} 

回答

2

which该参数表示选定的项目的索引。所以,你可以写:

TimeTable selectedItem = allTables.get(which); 

此外,我认为当你调用setSingleChoiceItem方法,没有必要为对话提供自定义视图。

这里是字符串数组工作示例:

AlertDialog dialog = new AlertDialog.Builder(getActivity()).setTitle("Dialog").setSingleChoiceItems(new String[]{"Item 1", "Item 2"}, 0, new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        switch (which) { 
         case 0: 
          //Item 1 was selected 
          break; 
         case 1: 
          //Item 2 was selected 
          break; 
        } 
        dialog.dismiss(); 
       } 
      }).create(); 
dialog.show(); 

可以考绩ListAdapter,而不是字符串数组。

+0

项目没有被点击。如果我点击物品,没有任何反应。 – Sid

+0

请检查编辑。 @Misagh Emamverdi – Sid

+0

@Sid尝试从警报对话框中删除自定义视图。 –

相关问题