2013-03-04 41 views
0

与数据列表我有这样一个活动:显示不同的活动按照SQLite中

Image1

我加载从SQLite的列表中,我使用上下文菜单选择列表:

Image2

我选择更新以显示活动。

问题是,当我=我选择列表并根据数据列表在我的上下文菜单中选择更新时,如何显示不同的链接或加载活动?

实施例:

在备注字段,我有三组数据: “Serangan哈马”, “Pestisida” 和 “Bencana Alam的”。

我有3个活动形式为每个数据。

如果我选择“Bencana阿拉姆”,那么它会显示活动BencanaAlam.java

如果我选择“Pestisida”,那么它会显示活动Pestisida.java

这是活动代码:

public class MainListKeliling extends ListActivity { 
     private LocationManager lm; 
     String[] remark = { "Bencana Alam", "Serangan Hama", "Pestisida" }; 
     Spinner spinRemark; 
     private LocationListener locListener; 
     private TextView latTxt, lonTxt; 

     Intent intent = null; 
     private static final int ADD_ID = Menu.FIRST+1; 
     private static final int DELETE_ID = Menu.FIRST+3; 
     private static final int UPDATE_ID = Menu.FIRST+4; 
     private static final int DETAIL_ID = Menu.FIRST+5; 
     private static final int CANCEL = Menu.FIRST+6; 
     public static final int SHOW_SUB_ACTIVITY_VIEW=3; 
     public static final int DIALOG_DATE_AWAL = 5; 
     public static final int DIALOG_DATE_AKHIR = 6; 
     private DatabaseHelper db=null; 
     private DatabaseHelper ds=null; 
     private Cursor constantsCursor=null; 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.lyt_banner_keliling); 
     //ds = new DatabaseHelper(getApplicationContext()); 
     //ds.loadAll(); 

     db=new DatabaseHelper(this); 
     constantsCursor=db 
          .getReadableDatabase() 
          .rawQuery("SELECT _ID, alamat, tglb, tipe "+ 
            "FROM keliling ORDER BY _ID", 
            null); 

     ListAdapter adapter=new SimpleCursorAdapter(this, 
           R.layout.lyt_list_keliling, constantsCursor, 
           new String[] { 
              DatabaseHelper.ID, 
              DatabaseHelper.ALAMAT, 
              DatabaseHelper.TYPE, 
              DatabaseHelper.TANGGAL_AKHIR 
              }, 
           new int[] {R.id.id, R.id.alamat, R.id.remark, R.id.tglakhir}); 

     setListAdapter(adapter); 
     registerForContextMenu(getListView()); 

     Button button = (Button) findViewById(R.id.btnKembali); 
     button.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       // Perform action on click 
       LogOut(); 
       setResult(RESULT_OK, null); 
       finish(); 
      } 
     }); 

     button = (Button) findViewById(R.id.btnDataBaru); 
     button.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       // Perform action on click 
       add(); 
      } 
     }); 

     }// onCreate 

     private void LogOut(){ 

     }//LogOut 

     @Override 
     public void onDestroy() { 
     super.onDestroy(); 

     constantsCursor.close(); 
     db.close(); 
     } 





     @Override 
     public void onCreateContextMenu(ContextMenu menu, View v, 
             ContextMenu.ContextMenuInfo menuInfo) { 
     menu.add(Menu.NONE, DETAIL_ID, Menu.NONE, "Detail"); 
     menu.add(Menu.NONE, UPDATE_ID, Menu.NONE, "Update"); 
     menu.add(Menu.NONE, DELETE_ID, Menu.NONE, "Delete"); 
     menu.add(Menu.NONE, CANCEL, Menu.NONE, "Back") 

      .setAlphabeticShortcut('d'); 
     } 

     @Override 
     public boolean onContextItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 

     case DETAIL_ID: 
      AdapterView.AdapterContextMenuInfo info= 
       (AdapterView.AdapterContextMenuInfo)item.getMenuInfo(); 

      detail(info.id); 
      return(true); 

     case DELETE_ID: 
      AdapterView.AdapterContextMenuInfo infoDetail= 
       (AdapterView.AdapterContextMenuInfo)item.getMenuInfo(); 

      delete(infoDetail.id); 
      return(true); 

      case UPDATE_ID: 
       intent = new Intent(MainListKeliling.this, UpdateKeliling.class); 
       startActivityForResult(intent, SHOW_SUB_ACTIVITY_VIEW); 
       return(true); 
     } 

     return(super.onOptionsItemSelected(item)); 
     } 


     private LocationManager lman; 
     private LocationListener locaListener; 
     private TextView latTxtt, lonTxtt; 
     private EditText tvDisplayDateAwal, tvDisplayDateAkhir; 
     private DatePicker dpResult; 
     private int year; 
     private int month; 
     private int day; 

     private void add() { 
     LayoutInflater inflater=LayoutInflater.from(this); 
     View addView=inflater.inflate(R.layout.lyt_add_keliling, null); 
     latTxtt = (TextView) addView.findViewById(R.id.latitudeTxtt); 
     lonTxtt = (TextView) addView.findViewById(R.id.longitudeTxtt); 

     lman = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
     locaListener = new MyLocationListenerDialog(); 
     lman.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10, 10,locaListener); 

     tvDisplayDateAwal = (EditText) addView.findViewById(R.id.tglawal); 
     tvDisplayDateAkhir = (EditText) addView.findViewById(R.id.tglakhir); 
     dpResult = (DatePicker) addView.findViewById(R.id.dpResult); 
     dpResult.setVisibility(View.GONE); 

     final Calendar c = Calendar.getInstance(); 
     year = c.get(Calendar.YEAR); 
     month = c.get(Calendar.MONTH); 
     day = c.get(Calendar.DAY_OF_MONTH); 

     // set current date into textview 
     tvDisplayDateAkhir.setText(new StringBuilder() 
       // Month is 0 based, just add 1 
       .append(day).append("-").append(month + 1).append("-") 
       .append(year).append(" ")); 

     // set current date into datepicker 
     dpResult.init(year, month, day, null); 
     Date date1 = (Date) new Date(dpResult.getYear() - 1900, 
       dpResult.getMonth(), dpResult.getDayOfMonth()); 
     SimpleDateFormat dates = new SimpleDateFormat("dd-MM-yyyy"); 
     String dateString = dates.format(date1); 
     tvDisplayDateAkhir.setText(dateString); 

     View showDlgAwal = addView.findViewById(R.id.tglawal); 
     showDlgAwal.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       // Perform action on click 
       showDialog(DIALOG_DATE_AWAL); 
      } 
     }); 

     View showDlgAkhir = addView.findViewById(R.id.tglakhir); 
     showDlgAkhir.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       // Perform action on click 
       showDialog(DIALOG_DATE_AKHIR); 
      } 
     }); 

     //spinner 
     // buat spinner manual Petak 
     Spinner spinRemark = (Spinner) addView.findViewById(R.id.tipe); 

     ArrayAdapter<String> aa = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, remark); 
     aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     spinRemark.setAdapter(aa); 

     spinRemark = (Spinner) addView.findViewById(R.id.tipe); 
     spinRemark.setOnItemSelectedListener(new OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> parent, View v, int position, long id) { 
       //Toast.makeText(CPupukApp.this, "Anda Memilih: " + manufaktur[position],Toast.LENGTH_LONG).show(); 
      } 

      public void onNothingSelected(AdapterView<?> parent) { 

      } 


      }); 

     final DialogWrapper wrapper=new DialogWrapper(addView); 

     new AlertDialog.Builder(this) 
      .setTitle(R.string.add_title) 
      .setView(addView) 
      .setPositiveButton(R.string.ok, 
           new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, 
            int whichButton) { 
       processAdd(wrapper); 
       lman.removeUpdates(locaListener); 
      } 
      }) 
      .setNegativeButton(R.string.cancel, 
           new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, 
            int whichButton) { 
       // stop gps 
       lman.removeUpdates(locaListener); 
      } 
      }) 
      .show(); 
     }//akhir fungsi add 

     public Dialog onCreateDialog(int id) { 
      switch (id) { 
      case (DIALOG_DATE_AWAL): 
       return new DatePickerDialog(this, datePickerListenerAwal, year, 
         month, day); 

      case (DIALOG_DATE_AKHIR): 
       return new DatePickerDialog(this, datePickerListenerAkhir, year, 
         month, day); 
      } 
      return null; 
     }// onCreateDialog 

     // isi dialog awal 
     private DatePickerDialog.OnDateSetListener datePickerListenerAwal = new DatePickerDialog.OnDateSetListener() { 

      // when dialog box is closed, below method will be called. 
      public void onDateSet(DatePicker view, int selectedYear, 
        int selectedMonth, int selectedDay) { 
       year = selectedYear; 
       month = selectedMonth; 
       day = selectedDay; 

       // set selected date into textview 
       tvDisplayDateAwal.setText(new StringBuilder().append(day) 
         .append("-").append(month + 1).append("-").append(year) 
         .append(" ")); 

       // set selected date into datepicker also 
       dpResult.init(year, month, day, null); 

       Date date1 = (Date) new Date(dpResult.getYear() - 1900, 
         dpResult.getMonth(), dpResult.getDayOfMonth()); 
       SimpleDateFormat dates = new SimpleDateFormat("dd-MM-yyyy"); 
       String dateString = dates.format(date1); 
       tvDisplayDateAwal.setText(dateString); 
      } 
     }; 

     // isi dialog akhir 
     private DatePickerDialog.OnDateSetListener datePickerListenerAkhir = new DatePickerDialog.OnDateSetListener() { 

      // when dialog box is closed, below method will be called. 
      public void onDateSet(DatePicker view, int selectedYear, 
        int selectedMonth, int selectedDay) { 
       year = selectedYear; 
       month = selectedMonth; 
       day = selectedDay; 

       // set selected date into textview 
       tvDisplayDateAkhir.setText(new StringBuilder().append(day) 
         .append("-").append(month + 1).append("-").append(year) 
         .append(" ")); 

       // set selected date into datepicker also 
       dpResult.init(year, month, day, null); 

       Date date1 = (Date) new Date(dpResult.getYear() - 1900, 
         dpResult.getMonth(), dpResult.getDayOfMonth()); 
       SimpleDateFormat dates = new SimpleDateFormat("dd-MM-yyyy"); 
       String dateString = dates.format(date1); 
       tvDisplayDateAkhir.setText(dateString); 
      } 
     }; 

     private class MyLocationListenerDialog implements LocationListener { 
      @Override 
      public void onLocationChanged(Location loc) { 
       // TODO Auto-generated method stub 
       if (loc != null) { 
        latTxtt.setText(String.valueOf(loc.getLatitude())); 
        lonTxtt.setText(String.valueOf(loc.getLongitude())); 
       } 
      } 

      @Override 
      public void onProviderDisabled(String provider) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void onProviderEnabled(String provider) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void onStatusChanged(String provider, int status, Bundle extras) { 
       // TODO Auto-generated method stub 

      } 

     } 

     private void loadUser(View view) { 

      // Creating adapter for spinner 


     } 

     private void detail(final long rowId) { 
      if (rowId>0) { 
       LayoutInflater inflater=LayoutInflater.from(this); 
       View addView=inflater.inflate(R.layout.detail_keliling, null); 

       final DialogWrapper wrapper=new DialogWrapper(addView); 
       TextView idDt = (TextView) addView.findViewById(R.id.idDetail); 
       TextView codeTxtDt = (TextView) addView.findViewById(R.id.codeDetail); 
       TextView alamatTxtDt = (TextView) addView.findViewById(R.id.alamatDetail); 
       TextView batasTxtDt = (TextView) addView.findViewById(R.id.batasDetail); 
       TextView latTxtDt = (TextView) addView.findViewById(R.id.latDetail); 
       TextView lonTxtDt = (TextView) addView.findViewById(R.id.lonDetail); 
       TextView luasTxtDt = (TextView) addView.findViewById(R.id.luasDetail); 
       TextView tglAwalTxtDt = (TextView) addView.findViewById(R.id.tglAwalDetail); 
       TextView tglAkhirTxtDt = (TextView) addView.findViewById(R.id.tglAkhirDetail); 
       TextView remarkTxtDt = (TextView) addView.findViewById(R.id.tipe); 
       //View editTextHidden = (EditText) findViewById(R.id.txtHidden); 
       // database handler 
       DatabaseHelper db = new DatabaseHelper(getApplicationContext()); 
       // Spinner Drop down elements 
       SQLiteDatabase dbs = db.getReadableDatabase(); 

       Cursor cursor = dbs.rawQuery("SELECT * FROM keliling where _ID=" +rowId+"", null); 
       if (cursor.moveToFirst()) { 
       do { 
        String noId=cursor.getString(0); // Here you can get data from table and stored in string if it has only one string. 
        String code=cursor.getString(1); 
        String alamat=cursor.getString(2); 
        String batas=cursor.getString(3); 
        String lat=cursor.getString(4); 
        String lon=cursor.getString(5); 
        String luas=cursor.getString(6); 
        String tglAwal=cursor.getString(7); 
        String tglAkhir=cursor.getString(8); 
        String remark=cursor.getString(9); 

        idDt.setText(noId); 
        codeTxtDt.setText(code); 
        alamatTxtDt.setText(alamat); 
        batasTxtDt.setText(batas); 
        latTxtDt.setText(lat); 
        lonTxtDt.setText(lon); 
        luasTxtDt.setText(luas); 
        tglAwalTxtDt.setText(tglAwal); 
        tglAkhirTxtDt.setText(tglAkhir); 
        remarkTxtDt.setText(remark); 

       } while (cursor.moveToNext()); 
       } 
       if (cursor != null && !cursor.isClosed()) { 
       cursor.close(); 
       } 
       if(db!=null) 
       { 
        db.close(); 
       } 
       new AlertDialog.Builder(this) 
       .setTitle(R.string.detail_title) 

       .setView(addView) 
       .setPositiveButton(R.string.ok, 
            new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, 
             int whichButton) { 
        // ignore, just dismiss 
        } 
       }) 
       .show(); 
      } 
      } 

     private void delete(final long rowId) { 
     if (rowId>0) { 
      new AlertDialog.Builder(this) 
      .setTitle(R.string.delete_title) 
      .setPositiveButton(R.string.ok, 
           new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, 
            int whichButton) { 
       processDelete(rowId); 
       } 
      }) 
      .setNegativeButton(R.string.cancel, 
           new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, 
            int whichButton) { 
       // ignore, just dismiss 
       } 
      }) 
      .show(); 
     } 
     } 

     private void processAdd(DialogWrapper wrapper) { 
     ContentValues values=new ContentValues(2); 

     values.put(DatabaseHelper.CODE, wrapper.getCode()); 
     values.put(DatabaseHelper.ALAMAT, wrapper.getAlamat()); 
     values.put(DatabaseHelper.BATAS, wrapper.getBatas()); 
     values.put(DatabaseHelper.LAT, wrapper.getLat()); 
     values.put(DatabaseHelper.LON, wrapper.getLon()); 
     values.put(DatabaseHelper.LUAS, wrapper.getLuas()); 
     values.put(DatabaseHelper.TANGGAL_AWAL, wrapper.getTglA()); 
     values.put(DatabaseHelper.TANGGAL_AKHIR, wrapper.getTglB()); 
     values.put(DatabaseHelper.TYPE, wrapper.getRemark()); 

     db.getWritableDatabase().insert("keliling", DatabaseHelper.ALAMAT, values); 
     constantsCursor.requery(); 
     } 

     private void processDelete(long rowId) { 
     String[] args={String.valueOf(rowId)}; 

     db.getWritableDatabase().delete("keliling", "_ID=?", args); 
     constantsCursor.requery(); 
     } 

     class DialogWrapper { 
     EditText codeField=null; 
     EditText alamatField=null; 
     EditText batasField=null; 
     EditText luasField=null; 
     EditText tglAField=null; 
     EditText tglBField=null; 
     TextView latField=null; 
     TextView lonField=null; 
     Spinner remark=null; 
     View base=null; 

     DialogWrapper(View base) { 
      this.base=base; 
      tglBField=(EditText)base.findViewById(R.id.tglakhir); 
     } 

     String getCode() { 
      return(getCodeField().getText().toString()); 
      } 

     String getAlamat() { 
      return(getAlamatField().getText().toString()); 
     } 

     String getBatas() { 
      return(getBatasField().getText().toString()); 
      } 

     String getLuas() { 
      return(getLuasField().getText().toString()); 
      } 

     String getTglA() { 
      return(getTglAField().getText().toString()); 
      } 

     String getTglB() { 
      return(getTglBField().getText().toString()); 
     } 

     String getLat() { 
      return(getLatField().getText().toString()); 
      } 

     String getLon() { 
      return(getLonField().getText().toString()); 
      } 

     String getRemark(){ 
      return(getRemarkField().getSelectedItem().toString()); 
     } 
     //String spinnerMan=((Spinner) remark).getSelectedItem().toString(); 

     private EditText getCodeField() { 
      if (codeField==null) { 
       codeField=(EditText)base.findViewById(R.id.code); 
      } 
      return(codeField); 
      } 

     private EditText getAlamatField() { 
      if (alamatField==null) { 
       alamatField=(EditText)base.findViewById(R.id.alamat); 
      } 

      return(alamatField); 
     } 

     private EditText getBatasField() { 
      if (batasField==null) { 
       batasField=(EditText)base.findViewById(R.id.batas); 
      } 

      return(batasField); 
      } 

     private TextView getLatField() { 
      if (latField==null) { 
       latField=(TextView)base.findViewById(R.id.latitudeTxtt); 
      } 

      return(latField); 
      } 

     private TextView getLonField() { 
      if (lonField==null) { 
      lonField=(TextView)base.findViewById(R.id.longitudeTxtt); 
      } 

      return(lonField); 
      } 

     private EditText getLuasField() { 
      if (luasField==null) { 
       luasField=(EditText)base.findViewById(R.id.luas); 
      } 

      return(luasField); 
      } 

     private EditText getTglAField() { 
      if (tglAField==null) { 
       tglAField=(EditText)base.findViewById(R.id.tglawal); 
      } 

      return(tglAField); 
      } 

     private EditText getTglBField() { 
      if (tglBField==null) { 
       tglBField=(EditText)base.findViewById(R.id.tglakhir); 
      } 

      return(tglBField); 
     } 

     private Spinner getRemarkField() { 
       if (remark==null) { 
        remark=(Spinner)base.findViewById(R.id.tipe); 
       } 

       return(remark); 
      } 
     } 
    } 

如何做到这一点?

回答

2

所以基本上你想从列表中选择项目onContextItemSelected()。

// Here's how you can get the correct item in onContextItemSelected() 
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); 
Object item = getListAdapter().getItem(info.position); 

由于您使用的是SimpleCursorAdapter作为ListAdapter所以对象上面返回的是一个指针。

Cursor c = (Cursor) item; 
    String type = c.getString(c.getColumnIndex(DatabaseHelper.TYPE)); 
    Intent intent; 

    if ("Bencana Alam".equals(type)) { 
     intent = new Intent(MainListKeliling.this, BencanaAlam.class); 
    } else if ("Pestisida".equals(type)) { 
     intent = new Intent(MainListKeliling.this, Pestisida.class); 
    } 
    startActivityForResult(intent, SHOW_SUB_ACTIVITY_VIEW); 
+0

我创建了新的case'onContextItemSelected()'方法并使用你的代码,现在可以工作。非常感谢 – 2013-03-04 06:14:06