2011-12-13 99 views
0

我在做一个联系人列表android应用程序,但我的屏幕有一个小问题。 这里是我的search.xml代码:android意图新屏幕

<?xml version="1.0" encoding="utf-8" ?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical" 
android:layout_width="fill_parent"  
android:layout_height="fill_parent"> 
<LinearLayout 
android:orientation="horizontal" 
android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 
<EditText android:id="@+id/searchText" 
android:hint="@string/searchDefault" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
    android:layout_weight="1" /> 
<Button android:id="@+id/searchButton" 
android:text="Search" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" /> 
</LinearLayout> 
    <ListView 
android:id="@android:id/list" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" /> 

    </LinearLayout> 
enter code here 

这里是我的detalii.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 

    <TextView 
      android:id="@+id/name" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"/> 
    <ListView 
      android:id="@android:id/list" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent"/> 


    </LinearLayout> 

我的问题是,看起来就像图像我的屏幕下方,但我想对资讯出现在整个屏幕上。我不知道我在做什么错。有人能给我一个解决方案吗?

enter image description here

这是我search.java:

package org.example.dbcontactconsole; 




    import android.app.ListActivity; 
    import android.content.Intent; 
    import android.database.Cursor; 
    import android.database.sqlite.SQLiteDatabase; 
    import android.os.Bundle; 
    import android.view.View; 
    import android.view.View.OnClickListener; 
    import android.widget.Button; 
    import android.widget.EditText; 

    import android.widget.ListView; 
    import android.widget.SimpleCursorAdapter; 
    import static android.provider.BaseColumns._ID; 
    public class Search extends ListActivity { 

private static int[] TO = {R.id.rowid,R.id.name, R.id.mobilephone, R.id.email }; 
private static String[] FROM = {_ID,DbConstants.NAME, DbConstants.PHONE, DbConstants.EMAIL, }; 
private Button sButton; 

private ListView lv1; 
private static SQLiteDatabase db; 
    private DbCreate contacts; 
    private Cursor cursor; 
    private EditText searchText; 
    protected SimpleCursorAdapter adapter; 


protected void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.search); 
    searchText=(EditText)findViewById(R.id.searchText); 
    sButton=(Button)findViewById(R.id.searchButton); 
    sButton.setOnClickListener(new OnClickListener() { 

     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      showDatabaseContent(); 
       lv1 = getListView(); 

       lv1.setTextFilterEnabled(true); 
     } 
    }); 





    } 


    private Cursor getContacts() { 
     db = contacts.getReadableDatabase(); 
     cursor = db.rawQuery("SELECT _id,name, phone, email FROM contactTest1 WHERE name LIKE ?", 
       new String[]{searchText.getText().toString()+"%"}); 
     startManagingCursor(cursor); 
     return cursor; 
     } 

    public void showDatabaseContent(){ 
    contacts = new DbCreate(this); 
    try { 
     cursor = getContacts(); 
     showContacts(cursor); 
    } finally { 
     contacts.close(); 
     db.close(); 
    } 
    } 

    private void showContacts(Cursor cursor) { 
    //set up data binding 
    adapter = new SimpleCursorAdapter(this, R.layout.item, cursor, FROM, TO); 
    setListAdapter(adapter); 
    } 

    public void onListItemClick(ListView parent, View v, int position, long id) { 
    Intent abaintent = new Intent(this,Detalii.class); 
    Cursor cursor = (Cursor) adapter.getItem(position); 
    abaintent.putExtra("Contact_ID", cursor.getInt(cursor.getColumnIndex("_id"))); 
    startActivity(abaintent); 
    } 






    } 

这里是我的Detalii.java:

package org.example.dbcontactconsole; 


     import java.util.ArrayList; 
     import java.util.List; 

    import android.app.ListActivity; 
    import android.content.Intent; 
     import android.database.Cursor; 
     import android.database.sqlite.SQLiteDatabase; 
     import android.net.Uri; 
     import android.os.Bundle; 
     import android.view.LayoutInflater; 
     import android.view.View; 
     import android.view.ViewGroup; 
     import android.widget.ArrayAdapter; 
     import android.widget.ListView; 
     import android.widget.TextView; 

       public class Detalii extends ListActivity 
     { 
     protected TextView contactName; 
     protected TextView contactPhone; 
     protected TextView email; 
     protected int contactId; 
     protected List<Actiune> actiune; 
     protected ActiuneAdapter adapter; 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.detalii); 

    contactId = getIntent().getIntExtra("Contact_ID",0); 
    SQLiteDatabase db = (new DbCreate(this)).getWritableDatabase(); 
    Cursor cursor = db.rawQuery("SELECT name,phone,email FROM contactTest1 WHERE _id=?",new String[]{""+contactId}); 

     if (cursor.getCount() == 1) 
     { 
    cursor.moveToFirst(); 

    contactName = (TextView) findViewById(R.id.name); 
    contactName.setText(cursor.getString(cursor.getColumnIndex("name"))); 

    actiune= new ArrayList<Actiune>(); 
    String phoneString=cursor.getString(cursor.getColumnIndex("phone")); 
    if (phoneString!=null) 
    { 
    actiune.add(new Actiune("Suna la numar",phoneString,Actiune.ACTION_CALL)); 
    } 
    String stringemail = cursor.getString(cursor.getColumnIndex("email")); 
    if (stringemail != null) { 
      actiune.add(new Actiune("Email", stringemail,Actiune.ACTION_EMAIL)); 
      } 
    adapter = new ActiuneAdapter(); 
    setListAdapter(adapter); 
    } 
    } 
     public void onListItemClick(ListView parent, View view, int position, long id) { 

     Actiune action = actiune.get(position); 

     Intent intent; 
    switch (action.getType()) { 

    case Actiune.ACTION_CALL: 
      Uri callUri = Uri.parse("tel:" + action.getData()); 
      intent = new Intent(Intent.ACTION_CALL, callUri); 
     startActivity(intent); 
      break; 

    case Actiune.ACTION_EMAIL: 
    intent = new Intent(Intent.ACTION_SEND); 
    intent.setType("plain/text"); 
    intent.putExtra(Intent.EXTRA_EMAIL, new String[]{action.getData()}); 
    startActivity(intent); 
    break; 


     } 
    }  

    class ActiuneAdapter extends ArrayAdapter<Actiune> { 

    ActiuneAdapter() { 
      super(Detalii.this, R.layout.actiune_detalii, actiune); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
    Actiune action = actiune.get(position); 
    LayoutInflater inflater = getLayoutInflater(); 
    View view = inflater.inflate(R.layout.actiune_detalii, parent, false); 
    TextView label = (TextView) view.findViewById(R.id.label); 
    label.setText(action.getLabel()); 
    TextView data = (TextView) view.findViewById(R.id.data); 
    data.setText(action.getData()); 
    return view; 
    } 

    } 

    } 

这里是我的DBconsole.java:

package org.example.dbcontactconsole; 

       import android.content.ContentValues; 
       import android.content.Intent; 
       import android.database.Cursor; 
       import android.database.sqlite.SQLiteDatabase; 
       import android.os.Bundle; 
       import android.view.Menu; 
       import android.view.MenuInflater; 
       import android.view.MenuItem; 
       import android.widget.AdapterView; 
       import android.widget.AdapterView.OnItemClickListener; 
      import android.widget.AdapterView.OnItemSelectedListener; 
      import android.widget.ListView; 
      import android.widget.SimpleCursorAdapter; 
     import android.widget.Toast; 
     import android.view.View; 

     import android.app.ListActivity; 

     import static android.provider.BaseColumns._ID; 

     public class DbContactConsole extends ListActivity { 
    private static String[] FROM = {_ID,DbConstants.NAME }; 
    private DbCreate contacts; 
    private static SQLiteDatabase db; 
    private static int[] TO = {R.id.rowid,R.id.name,}; 
    private ListView lv1; 
    private static String itemId; 
    private Cursor cursor; 

    static final int CONTACT_CANCELED = 0; 
    static final int CONTACT_ADDED = 1; 
    static final int CONTACT_MODIFIED = 2; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     showDatabaseContent(); 
     lv1 = getListView(); 

     lv1.setTextFilterEnabled(true); 

     lv1.setOnItemClickListener(new OnItemClickListener() { 

     public void onItemClick(AdapterView<?> a, View v, int position, long id) { 
      cursor = (Cursor) a.getItemAtPosition(position); 
      itemId = cursor.getString(0); 
      openOptionsMenu(); 
      } 
     }); 

      lv1.setOnItemSelectedListener(new OnItemSelectedListener() { 

      public void onItemSelected(AdapterView<?> parent, View view, int position, long id){ 

     } 

     public void onNothingSelected(AdapterView<?> arg0) { 
      // TODO Auto-generated method stub 

     } 

     }); 
    } 

    //selected item index from ListView 
    public void showDialogItemId(long itemId){ 
     Toast.makeText(this, "Menu item selected index is" + Long.toString(itemId), Toast.LENGTH_LONG).show(); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu){ 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.menu, menu); 
     return true; 
     } 

        @Override 
      public boolean onOptionsItemSelected(MenuItem item){ 
     switch (item.getItemId()){ 
      case R.id.modifyitem: 
       if(null != itemId){ 
        Bundle contactToModify = new Bundle(); 
        contactToModify.putString("cFirstName", cursor.getString(1)); 
        contactToModify.putString("cMobilePhone", cursor.getString(2)); 
        contactToModify.putString("cEmail", cursor.getString(3)); 
        contactToModify.putString("mod_type", "modifyPerson"); 
        Intent intent = new Intent(this, ContactDetails.class); 
        intent.setClass(this, ContactDetails.class); 
        intent.putExtras(contactToModify); 
        startActivityForResult(intent, CONTACT_MODIFIED); 
       }else{ 
        Toast.makeText(this, "Select Contact to modify", Toast.LENGTH_LONG).show(); 
       } 
       break; 
      case R.id.additem: 

       Intent i = new Intent(this, ContactDetails.class); 
       Bundle bun = new Bundle(); 
       bun.putString("mod_type", "addPerson"); 
       i.setClass(this, ContactDetails.class); 
       i.putExtras(bun); 
       startActivityForResult(i, CONTACT_ADDED); 
       break; 

      case R.id.removeitem: 
       if(null != itemId){ 
        removeContact(itemId); 
        showDatabaseContent(); 
       } 
       else{ 
        Toast.makeText(this, "Select Contact to delete", Toast.LENGTH_LONG).show(); 
       } 
       break; 
      case R.id.search: 
       Intent j =new Intent(this,Search.class); 
       j.setClass(this, Search.class); 
       startActivity(j); 
       break; 
     } 
     return true; 
      } 

     @Override 
      protected void onActivityResult(int requestCode, int resultCode, Intent intent){ 
     // See which child activity is calling us back. 
     switch (resultCode) { 
      case CONTACT_ADDED: 
       // This is the standard resultCode that is sent back if the 
       // activity crashed or didn't doesn't supply an explicit result. 
       if (resultCode == RESULT_FIRST_USER){ 
        Bundle bundle = new Bundle(); 
        bundle = intent.getBundleExtra("contactData"); 
        addContact(bundle); 
        showDatabaseContent(); 
       } 
       else{ 
        Toast.makeText(this, "CANCEL CONTACT BUTTON PRESSED", Toast.LENGTH_LONG).show(); 
       } 
       break; 
       case CONTACT_MODIFIED: 
       if (resultCode == 2){ 
        Bundle bundle = new Bundle(); 
        bundle = intent.getBundleExtra("contactData"); 
        modifyContact(bundle); 
        showDatabaseContent(); 
       } 
       else{ 
        Toast.makeText(this, "MODIFY CONTACT FAILED", Toast.LENGTH_LONG).show(); 
       } 
       break; 
      default: 
       break; 
     } 
    } 

//method removes item from database 
    private void removeContact(String itemId){ 
     db = contacts.getWritableDatabase(); 
     db.delete(DbConstants.TABLE_NAME, "_ID=" + itemId, null); 

     } 

      private void addContact(Bundle bundle) { 
      // Insert a new record into the Events data source. 
      // You would do something similar for delete and update. 
      db = contacts.getWritableDatabase(); 
      ContentValues vals = new ContentValues(); 
      vals.put(DbConstants.NAME, bundle.getString("contactFirstName")); 
      vals.put(DbConstants.PHONE, bundle.getString("contactMobilePhone")); 
      vals.put(DbConstants.EMAIL, bundle.getString("contactEmail")); 
      db.insertOrThrow(DbConstants.TABLE_NAME, null, vals); 
     } 

//method should modify existing Contact 
    private void modifyContact(Bundle bundle){ 
     db = contacts.getWritableDatabase(); 
     ContentValues vals = new ContentValues(); 
     vals.put(DbConstants.NAME, bundle.getString("contactFirstName")); 
     vals.put(DbConstants.PHONE, bundle.getString("contactMobilePhone")); 
     vals.put(DbConstants.EMAIL, bundle.getString("contactEmail")); 
     db.update(DbConstants.TABLE_NAME, vals, _ID+"="+itemId, null); 
    } 

    private Cursor getContacts() { 
      db = contacts.getReadableDatabase(); 
      cursor = db.query(DbConstants.TABLE_NAME, FROM, null, null, null, 
       null,DbConstants.NAME); 
      startManagingCursor(cursor); 
      return cursor; 
    } 

    public void showDatabaseContent(){ 
     contacts = new DbCreate(this); 
     try { 
      cursor = getContacts(); 
      showContacts(cursor); 
     } finally { 
      contacts.close(); 
      db.close(); 
     } 
    } 

    private void showContacts(Cursor cursor) { 
     //set up data binding 
     SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,  R.layout.item, cursor, FROM, TO); 
     setListAdapter(adapter); 
    } 
     } 
+0

什么是你的java活动代码,作为XML并不能真正帮助 – 2011-12-13 21:26:13

回答

1

你有有垂直的方向?你能否改变detalii.xml的水平方向,以便水平填充而不是垂直填充父项?

android:orientation="vertical" 
+0

它并不能帮助我 – jonny 2011-12-13 22:00:47