2011-08-27 5 views
0

나는 android를 처음 접했고 추가 버튼이 각 항목이 아닌 한 번만 표시되도록하고 싶습니다.전체 화면 대신 LinearLayouts에서 ListView 사용하기

공용 클래스 PopulatingSubject는 ListActivity를 확장 {

공공 정적 : 나는 I want the add subject button to be displayed only once and not on each item

코드합니다 (showSubjectOnList() 메서드를 참조하십시오) 다음과이 사용 SimpleCursorAdapter

감사 Waneya 이크발을 할 수있는 방법 String 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에는 버튼을 추가하지만 List에는 버튼을 추가하지 않는 것입니다. ListActivity를 확장하는 Activity에 버튼을 추가하면 SimpleCursorAdapter가 XML ID를 사용하여 목록을 채우므로 List의 모든 항목에이 버튼이 표시됩니다. –

+0

무엇이 문제입니까? –

답변

0

기본적으로 레이아웃을 코드 또는 XML로 작성해야합니다 (XML 권장). 그런 다음 해당 레이아웃 내에 ListView를 만듭니다. 단추를 만들어 같은 레이아웃에 추가 할 수 있습니다. 레이아웃을 생성하기 때문에 ListView와 Button을 원하는대로 배치 할 수 있습니다.

그런 다음 ListView에 대한 참조를 만들어 어댑터에 설정할 수 있습니다.

예 :

는 "my_layout.xml"라는 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 나는 이것을 시도하고 id가 listViewLinearLayout 인 my_laout.xml 내에 레이아웃을 만들었습니다. SimpleCursorAdapter 어댑터 = 새로운 SimpleCursorAdapter (이, R.id.listViewLinearLayout, 커서 subFROM, subTO)를 다음과 같이 난 후 간단한 커서 어댑터에이 ID (listViewLinearLayout)를 사용; 그러나 SimpleCursorAdapter에 my_layout 내의 linearLayout ID가 아닌 R.layout.my_layout이 필요하기 때문에 응용 프로그램이 충돌합니다. 또한 listView의 id를 사용하려고 시도했지만 (id는 listView1 임)이 또한 작동하지 않았습니다. –

+0

아, 그래, 너 이미 벌써 가봤 단다. 위의 질문에 관련 코드/xml을 붙여 넣을 수 있다면 문제를 찾거나 제안 할 수 있습니다. – C0deAttack

+0

여기에 사진을 게시하려면 어떻게해야합니까? : s –