2014-12-06 1 views
-1

Я создал базу данных в SQLite, которая получает информацию о сотруднике из формы, содержащей редактирующие тексты, и я хочу показать имя сотрудника в списке в другой деятельности, и когда я нажимаю на одно имя, я хочу, чтобы мое приложение отображало полную информацию в следующем действии, любезно помогите мне составить представление списка и получить имена из базы данных и сделать его доступным для клика, что откроет полную информацию о emloyee ,Как показать одиночную запись в виде списка из базы данных SQLite

Вот код Это мой InformationDataBase класс адаптер

public class InformationDataBaseAdapter { 

    public static final String ID_COLUMN = "id"; 
    public static final String NAME_COLUMN2 = "name"; 
    public static final String FNAME_COLUMN = "fname"; 
    public static final String EMPLOYEE_DOB = "dob"; 
    public static final String EMPLOYEE_INTEREST = "interest"; 
    public static final String EMPLOYEE_ADDRESS = "address"; 
    public static final String EMPLOYEE_CONTACT = "contact"; 

    static final String DATABASE_NAME = "information.db"; 
    static final String EMPLOYEE_TABLE = "employee"; 
    static final int DATABASE_VERSION = 1; 




    static final String CREATE_EMPLOYEE = "CREATE TABLE " 
      + EMPLOYEE_TABLE + " (" + ID_COLUMN + " INTEGER PRIMARY KEY AUTOINCREMENT, " 
      + NAME_COLUMN2 + " TEXT NOT NULL, " + FNAME_COLUMN + " TEXT NOT NULL, " + EMPLOYEE_INTEREST + " TEXT, " 
      + EMPLOYEE_DOB + " DATE, " + EMPLOYEE_ADDRESS + " TEXT, " + EMPLOYEE_CONTACT + " INTEGER);"; 


    public SQLiteDatabase db; 
    private final Context context; 
    private DbHelper dbHelper; 

    public InformationDataBaseAdapter(Context _context) { 
     context = _context; 
     dbHelper = new DbHelper(context, DATABASE_NAME, null, DATABASE_VERSION); 
    } 

    public InformationDataBaseAdapter open() throws SQLException { 
     db = dbHelper.getWritableDatabase(); 
     return this; 
    } 

    public void close() { 
     db.close(); 
    } 

    public SQLiteDatabase getDatabaseInstance() { 
     return db; 
    } 

    public void insertEntry(String Name, String FName, String Interest ,String DOB,String Address,String Contact) { 
     ContentValues newValues = new ContentValues(); 
     newValues.put("NAME", Name); 
     newValues.put("Fname", FName); 
     newValues.put("Interest", Interest); 
     newValues.put("DOB", DOB); 
     newValues.put("ADDRESS", Address); 
     newValues.put("CONTACT", Contact); 

     db.insert("EMPLOYEE_TABLE", null, newValues); 

    } 

    public int deleteEntry(String Name) { 

     String where = "NAME=?"; 
     int numberOFEntriesDeleted = db.delete("INFORMATION", where, 
       new String[] { Name }); 
     return numberOFEntriesDeleted; 
    } 

    public String getSinlgeEntry(String Name) { 
     Cursor cursor = db.query("EMPLOYEE", null, " NAME=?", 
       new String[] { Name }, null, null, null); 
     if (cursor.getCount() < 1) // UserName Not Exist 
     { 
      cursor.close(); 
      return "NOT EXIST"; 
     } 
     cursor.moveToFirst(); 
     String info = cursor.getString(cursor.getColumnIndex("INFO")); 
     cursor.close(); 
     return info; 
    } 

    public void updateEntry(String ID, String Name, String FName, String Interest ,String DOB,String Address,String Contact) { 
     ContentValues updatedValues = new ContentValues(); 

     updatedValues.put("NAME", Name); 
     updatedValues.put("Fname", FName); 
     updatedValues.put("Interest", Interest); 
     updatedValues.put("DOB", DOB); 
     updatedValues.put("ADDRESS", Address); 
     updatedValues.put("CONTACT", Contact);; 

     String where = "NAME = ?"; 
     db.update("INFORMTION", updatedValues, where, new String[] { Name }); 
    } 
} 

И это моя база данных вспомогательный класс

общественного класса DbHelper расширяет SQLiteOpenHelper {

public DbHelper(Context context, String name, CursorFactory factory, 
     int version) { 
    super(context, name, factory, version); 
    // TODO Auto-generated constructor stub 
} 

@Override 
public void onCreate(SQLiteDatabase db) { 
    // TODO Auto-generated method stub 
    db.execSQL(LoginDataBaseAdapter.DATABASE_CREATE); 
    db.execSQL(InformationDataBaseAdapter.CREATE_EMPLOYEE); 
} 

@Override 
public void onUpgrade(SQLiteDatabase db, int _oldVersion, int _newVersion) { 

    // TODO Auto-generated method stub  
    db.execSQL("DROP TABLE IF EXISTS " + "TEMPLATE"); 
    onCreate(db); 
} 

}

И это java cl задница информации вида деятельности

общественный класс данных расширяет активность {

TextView Tv1,Tv2,Tv3,Tv4,Tv5,Tv6,Tv7; 
EditText Etname,EtFname,Etinterest,EtDOB,EtAddress,EtContact; 
Button Bsubmit; 

InformationDataBaseAdapter informationDataBaseAdapter; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.information); 

    informationDataBaseAdapter=new InformationDataBaseAdapter(this); 
    informationDataBaseAdapter=informationDataBaseAdapter.open(); 

    Tv1=(TextView)findViewById(R.id.InfoTV1); 
    Tv2=(TextView)findViewById(R.id.InfoTV2); 
    Tv3=(TextView)findViewById(R.id.InfoTV3); 
    Tv4=(TextView)findViewById(R.id.InfoTV4); 
    Tv5=(TextView)findViewById(R.id.InfoTV5); 
    Tv6=(TextView)findViewById(R.id.InfoTV6); 
    Tv7=(TextView)findViewById(R.id.InfoTV7); 
    Etname=(EditText)findViewById(R.id.InfoET1); 
    EtFname=(EditText)findViewById(R.id.InfoET2); 
    Etinterest=(EditText)findViewById(R.id.InfoET3); 
    EtDOB=(EditText)findViewById(R.id.InfoET4); 
    EtAddress=(EditText)findViewById(R.id.InfoET5); 
    EtContact=(EditText)findViewById(R.id.InfoET6); 
    Bsubmit=(Button)findViewById(R.id.bsubmitInfo); 

    Bsubmit.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      String Name=Etname.getText().toString(); 
      String FName=EtFname.getText().toString(); 
      String Interest=Etinterest.getText().toString(); 
      String DOB=EtDOB.getText().toString(); 
      String Address=EtAddress.getText().toString(); 
      String Contact=EtContact.getText().toString(); 

      // check if any of the fields are vaccant 
      if(Name.equals("")||FName.equals("")||Interest.equals("")||DOB.equals("")||Address.equals("")||Contact.equals("")) 
      { 

         AlertDialog.Builder alertBuilder=new AlertDialog.Builder(Information.this); 
         alertBuilder.setTitle("Invalid Data"); 
         alertBuilder.setMessage("Please, Enter valid data"); 
         alertBuilder.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 

          public void onClick(DialogInterface dialog, int which) { 
            dialog.cancel(); 

          } 
         }); 
         alertBuilder.create().show(); 

      } 
      else 
      { 
       // Save the Data in Database 
       informationDataBaseAdapter.insertEntry(Name,FName,Interest,DOB,Address,Contact); 
       Toast.makeText(getApplicationContext(), "Information successfully added", Toast.LENGTH_LONG).show(); 
       Intent i2= new Intent(Information.this,Menu.class); 
       startActivity(i2); 

      } 
     } 
    }); 
} 

@Override 
protected void onDestroy() { 
    // TODO Auto-generated method stub 
    super.onDestroy(); 
    informationDataBaseAdapter.close(); 
} 

@Override 
protected void onPause() { 
    // TODO Auto-generated method stub 
    super.onPause(); 
    finish(); 
} 

}

ответ

0

Это нужно много кода. Я хочу дать вам свое видение структуры программы. В любом случае, вы должны работать самостоятельно, чтобы делать то, что хотите.

  1. Работа с базой данных в Android должна осуществляться через ContentProvider https://developer.android.com/reference/android/content/ContentProvider.html. Вот руководство разработчика https://developer.android.com/guide/topics/providers/content-provider-basics.html, но я думаю, вы должны скачать какой-то проект из github и посмотреть, как он работает. Клонировать весь код отсюда https://github.com/bazli/android_packages_apps_AlarmClock/blob/donut/src/com/android/alarmclock/AlarmProvider.java и изменить.

  2. Для загрузки данных из базы данных используйте CursorLoader https://developer.android.com/reference/android/content/CursorLoader.html. О загрузчиках вы можете прочитать здесь https://developer.android.com/guide/components/loaders.html.

  3. Использование SimpleCursorAdapter https://developer.android.com/reference/android/support/v4/widget/SimpleCursorAdapter.html для обработки данных из базы данных и показать его в ListView

  4. Я думаю, это рано для того, чтобы использовать фрагменты, так что вы, так что вы просто должны начать новую активность после нажатия пользователя на некоторых item в ListView

Надеюсь, это поможет! Удачи!

Смежные вопросы