0

AFter很多小時的工作使ListView與我的數據庫一起工作,我終於設法讓它編譯。現在我知道事情正在正確地進行通信(即將數據庫信息添加到列表視圖中),我想知道是否有人可以提出使其更有用的方法。我注意到,當我運行應用程序時,listview項目似乎是可點擊的,但無處可去。我怎樣才能添加到我的代碼,所以當一個項目被點擊時,它會打開一個包含所有項目信息的新活動?ListView和ArrayAdapter配置,Android應用程序

private void showEvents() { 
    SQLiteDatabase db = post.getWritableDatabase(); 
    Cursor cursor= db.rawQuery("SELECT "+TITLE+", "+LINK+", "+POST+", "+DATE+" FROM "+TABLE_NAME+" "+"ORDER BY "+DATE+" DESC;",null); 
    startManagingCursor(cursor); 

    //TextView tv = new TextView(this); 
    //ListView lv1 = (ListView) findViewById(R.id.myListView); 
    ListView lv1 = new ListView(this); 
    lv1.setId(2000); 


    // Stuff them all into a big string 
    StringBuilder builder = new StringBuilder(""); 
    ArrayList<String> codes = new ArrayList<String>(); 
    while(cursor.moveToNext()){ 
     String title = cursor.getString(0); 
     //builder.append("Title: ").append(title).append("\n"); 

     String link = cursor.getString(1); 
     //builder.append("Link: ").append(link).append("\n"); 

     String post = cursor.getString(2); 
     //builder.append("Post: ").append(post).append("\n"); 

     String date = cursor.getString(3); 
     //builder.append("Date: ").append(date).append("\n"); 
     codes.add(title); 

    } 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, codes); 
    lv1.setAdapter(adapter); 
    this.setContentView(lv1); 

    //tv.setText(builder); 
    //this.setContentView(tv); 
} 

例如,當我添加codes.add(冠軍),我要點擊該項目並查看內容字段(如鏈接,描述,日期)的其餘部分。大多數教程沒有涉及這個arrayadaper設置,所以很難知道該怎麼做。

回答

2

您需要將點擊偵聽器添加到列表視圖中,然後找出一種方法來確定點擊的內容並開始新的活動。類似這樣的:

lv.setOnItemClickListener(new OnItemClickListener() { 
public void onItemClick(AdapterView<?> parent, View view, 
    int position, long id) { 
     String textOfSelectedItem =((TextView) view).getText().toString();  
     //Create our intent    
     Intent i = new Intent(getApplicationContext(), NewActivity.class);        
     i.putExtra("Place", textOfSelectedItem); 
     startActivity(i); 
     } 
} 

});

+0

感謝您的幫助。我目前離開我的電腦,但如果這證明是解決方案,我會確保並接受此答案。 – Nibirue

0

上面的代碼很混亂,您應該編寫一個擴展CursorAdapter的自定義適配器。

您可能想要查看android dev網站上的NotePad示例應用程序。