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示例应用程序。