2011-08-27 86 views
0

我是新來的android,我想要添加主題按鈕只顯示一次,而不是每個項目。我怎樣才能做到這一點使用SimpleCursorAdapter在LinearLayouts中使用ListView而不是全屏

問候 Waneya伊克巴爾I want the add subject button to be displayed only once and not on each item

的代碼如下(見showSubjectOnList()方法):

公共類PopulatingSubject擴展ListActivity {

公共靜態字符串subjectName; 私人SoftCopyDatabase主題;

private static int[] subTO = { R.id.subject }; 
private static String[] subFROM = { SUBJECT }; 


@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    subjects = new SoftCopyDatabase(this); 

} 

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

    try { 

     showSubjectsOnList(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
public void onStop() { 
    super.onStop(); 
    if (subjects.getReadableDatabase().isOpen()) { 
     subjects.close(); 
    } 
} 

public void onDestroy(){ 
    super.onDestroy(); 
    if (subjects.getReadableDatabase().isOpen()) { 
     subjects.close(); 
    } 
} 

private void showSubjectsOnList() { 

    String sql = "SELECT " + _ID + "," + SUBJECT + " FROM " + TABLE_NAME 
      + " GROUP BY " + SUBJECT + ";"; 
    Cursor cursor = subjects.getReadableDatabase().rawQuery(sql, null); 
    SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, 
      R.layout.item_subject, cursor, subFROM, subTO); 
    setListAdapter(adapter); 
    startManagingCursor(cursor); 

} 
@Override 
protected void onListItemClick(ListView listView, View view, int position, 
     long id) { 
    super.onListItemClick(listView, view, position, id); 
    subjectName=getSubjectName(Long.toString(id)); 
    startActivity(new Intent(this, PopulatingLectures.class)); 
} 



private String getSubjectName(String ID) { 

    Cursor cursor = subjects.getReadableDatabase().query(TABLE_NAME, 
      new String[] { SUBJECT }, "_ID=?", new String[] { ID }, null, 
      null, null); 
    cursor.moveToFirst(); 
    int subjectIndex = cursor.getColumnIndex(SUBJECT); 
    String subjectName = cursor.getString(subjectIndex); 
    cursor.close(); 
    return subjectName; 
} 

}

佈局如下:

佈局的圖片:

enter image description here

+0

你可以舉一個你想要完成的佈局的例子嗎? – hooked82

+0

其實我想實現的是在listActivity中添加一個按鈕,但不在列表中。如果我在擴展ListActivity的Activity中添加一個按鈕,則該按鈕將顯示在List的每個項目中,因爲SimpleCursorAdapter正在使用XML的ID填充列表。 –

+0

什麼是問題? –

回答

0

您必須自己在代碼或XML中建立佈局(建議使用XML)。 然後在該佈局中創建一個ListView。您可以創建按鈕並將其添加到相同的佈局。由於您正在創建佈局,因此您可以以任何適合您需要的方式來定位ListView和Button。

然後創建一個對ListView的引用,以便您可以爲其設置適配器。

例子:

佈局XML文件名爲 「my_layout.xml」:

<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Sign In" /> 

    <ListView 
     android:id="@+id/my_listview" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" /> 

</LinearLayout> 

然後在代碼:

public class MyActivity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.my_layout); 
     ListView listView = (ListView) findViewById(R.id.my_listview); 
     listView.setAdapter(/*Put your adapter reference here*/); 
     listView.setOnItemClickListener(new OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      // Handle list selections here 
     } 
    }); 
    } 
} 

顯然沒有數據,但你可以這樣做,但設置你的適配器在上面指出的地方。

+0

@COdeAttack 我試圖做到這一點,並在my_laout.xml中創建了一個id爲listViewLinearLayout的佈局。 我然後在簡單的遊標適配器使用該ID(listViewLinearLayout)如下 SimpleCursorAdapter適配器=新SimpleCursorAdapter(此,R.id.listViewLinearLayout,光標,subFROM,subTO); 但是應用程序崩潰,只是因爲SimpleCursorAdapter需要R.layout.my_layout而不是my_layout中的linearLayout的id。 我也嘗試使用listView的id(ID是listView1),但這也沒有奏效。 –

+0

好的,你已經去了,這很好。如果您可以在上面的問題中粘貼一些相關的代碼/ xml,那麼這將幫助我們找到問題或提出建議。 – C0deAttack

+0

如何在此張貼圖片? :s –