2011-07-14 58 views
9

我想在其他一些小工具(按鈕,editText等)下設置Listview。我不想爲listview使用另一個活動。讀了一些後,我發現How can I implement a ListView without ListActivity? (use only Activity),我試圖做到這一點,與結束了: 這裏是我的main.xml:沒有ListActivity的ListView

<LinearLayout android:id="@+id/relativeLayout1" 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" android:layout_height="wrap_content" 
android:orientation="vertical"> 
<TextView ...[some code].../> 
<EditText ...[some code].../> 
<ImageButton ...[some code].../> 
<Chronometer ..[some code]..../> 
<ListView android:id="@+id/listView1" android:layout_height="wrap_content" 
    android:layout_width="fill_parent"></ListView> 

這裏是我的onCreate:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    button1 = (ImageButton) findViewById(R.id.button1); 
    mChronometer = (Chronometer) findViewById(R.id.chronometer1); 
    editText1 = (EditText) findViewById(R.id.editText1); 
    ListView lv = (ListView) findViewById(R.id.listView1); 
    String[] listword = new String[] {"Hello","World","Foo","Bar"}; 
    lv.setAdapter(new ArrayAdapter<String>(this, R.layout.list_item, listword)); 
    } 

這裏is list_item.xml

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:padding="10dp" 
android:textSize="16sp" > 
</TextView> 

當我在我的物理設備上進行調試時,t他的應用程序只是保持全黑。如果我註釋掉涉及列表的onCreate()的行,那麼應用程序就會工作(顯然沒有列表視圖)。 任何想法可能是錯誤的?

+0

正如你懷疑的小部件不能沒有理由消失。嘗試將背景顏色設置爲不同的小部件以查看顯示的是哪一個。 –

+0

當listview被刪除時,以下內容會顯示出來嗎? <天文臺.. [一些代碼] .... /> –

+0

是的,當我刪除listview的一切顯示。 – leonsas

回答

16

我其實有一個應用程序,下面列出一些TextViews和上面的兩個按鈕,讓我抓住我的代碼!

這裏是我的活動與textviews以下ListView和上方的按鈕(具有相當多的簡潔,刪除):

public class BNYDirectoryResults extends Activity{ 

    public static String[] stuff; 
    ListView list; 
    BNYAdapter adapter; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.resultscreen); 

     TextView headDisplay = (TextView)findViewById(R.id.results); 
     TextView headCount = (TextView)findViewById(R.id.resultsTotal); 
     TextView headPages = (TextView)findViewById(R.id.pages); 

     //Set up the results list, see BNYAdapter 
     list = (ListView)findViewById(R.id.list); 
     adapter = new BNYAdapter (this, BNYDirectory.ReturnResults); 
     list.setAdapter(adapter); 

     //Sets up header information (pages, total results) 
     //Just some stuff to change the TextViews 


     //Passes EmployeeID and Phone Number to AND opens the details page 
     list.setOnItemClickListener(new OnItemClickListener(){ 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id){ 
       String EID = BNYDirectory.ReturnResults[position][0]; 
       String phoneNumber = BNYDirectory.ReturnResults[position][2]; 

       BNYDirectoryTransaction.doDetails(EID, phoneNumber); 
       Intent i = new Intent(view.getContext(), BNYDirectoryDetails.class); 
       startActivity(i); 

      } 
     }); 
    } 
} 

下面是它的XML文件:

<TextView 
     android:id="@+id/results" 
     android:text="Name" 
     android:gravity="center" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" android:textStyle="bold"/> 
    <TextView 
     android:id="@+id/resultsTotal" 
     android:text="Phone" 
     android:gravity="center" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" android:textStyle="bold"/> 
    <TextView 
     android:id="@+id/pages" 
     android:text="AIM" 
     android:gravity="center" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" android:textStyle="bold"/> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal"> 

    <TextView 
     android:id="@+id/name" 
     android:text="Name" 
     android:gravity="center" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" /> 
    <TextView 
     android:id="@+id/phone" 
     android:text="Phone" 
     android:gravity="center" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" /> 
    <TextView 
     android:id="@+id/aim" 
     android:text="AIM" 
     android:gravity="center" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" /> 
    <TextView 
     android:id="@+id/dept" 
     android:text="Dept" 
     android:gravity="center" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" /> 
    </LinearLayout> 

    <ListView 
     android:id="@+id/list" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_weight="1"/> 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal"> 

    <Button 
     android:id="@+id/prevButton" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="Previous" 
     android:layout_weight="1"/> 
    <Button 
     android:id="@+id/nextButton" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="Next" 
     android:layout_weight="1"/> 

    </LinearLayout> 
</LinearLayout> 

這裏是列表的自定義適配器:

import android.app.Activity; 
import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.TextView; 

public class BNYAdapter extends BaseAdapter { 

    private Activity activity; 
    private String[][] results; 
    private static LayoutInflater inflater=null; 

    public BNYAdapter(Activity a, String[][]info) { 
     activity = a; 
     results = info; 
     inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 

    public int getCount() { 
     return results.length; 
    } 

    public Object getItem(int position) { 
     return position; 
    } 

    public long getItemId(int position) { 
     return position; 
    } 

    public static class ViewHolder{ 
     public TextView name; 
     public TextView phone; 
     public TextView aim; 
     public TextView dept; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     View vi=convertView; 
     ViewHolder holder; 
     if(convertView==null){ 
      vi = inflater.inflate(R.layout.item, null); 
      holder=new ViewHolder(); 
      holder.name=(TextView)vi.findViewById(R.id.nameItem); 
      holder.phone=(TextView)vi.findViewById(R.id.phoneItem); 
      holder.aim=(TextView)vi.findViewById(R.id.aimItem); 
      holder.dept=(TextView)vi.findViewById(R.id.deptItem); 
      vi.setTag(holder); 
     } 
     else 
      holder=(ViewHolder)vi.getTag(); 

     holder.name.setText(BNYDirectory.ReturnResults[position][1]); 
     holder.phone.setText(BNYDirectory.ReturnResults[position][2]); 
     holder.aim.setText(BNYDirectory.ReturnResults[position][3]); 
     holder.dept.setText(BNYDirectory.ReturnResults[position][4]); 
     return vi; 
    } 

} 

和所有在一起,使頁面像Look, a list with other stuff around it!

+0

謝謝!我只是不得不把所有的東西都放到另一個LinerLayout – leonsas

+0

很高興你的工作。我知道我的一些應用程序可能有太多的線性佈局。 – Rob

-2

您可以使用您自己的佈局與ListActivity。讓你的活動擴展ListActivity,創建你自己的佈局,並確保ListView具有android:id="@android:id/list"(這是ListActivity如何鏈接到你自己的佈局中的ListView),然後在onCreate中設置你的佈局爲setContentView

相關問題