Java ListView和ArrayAdapter配置,android应用程序

Java ListView和ArrayAdapter配置,android应用程序,java,android,listview,android-activity,android-arrayadapter,Java,Android,Listview,Android Activity,Android Arrayadapter,在让ListView与我的DB一起工作了好几个小时之后,我终于设法让它编译了。现在,我知道事情正在正确地进行通信(即,数据库信息到列表视图),我想知道是否有人可以建议使它更有用的方法。我注意到,当我运行应用程序时,listview项目似乎是可点击的,但却毫无用处。我如何向代码中添加这样的内容:当单击某个项目时,它会打开一个包含所有项目信息的新活动 private void showEvents() { SQLiteDatabase db = post.getWritableDatabas

在让ListView与我的DB一起工作了好几个小时之后,我终于设法让它编译了。现在,我知道事情正在正确地进行通信(即,数据库信息到列表视图),我想知道是否有人可以建议使它更有用的方法。我注意到,当我运行应用程序时,listview项目似乎是可点击的,但却毫无用处。我如何向代码中添加这样的内容:当单击某个项目时,它会打开一个包含所有项目信息的新活动

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);
 }
private void showEvents(){
SQLiteDatabase db=post.getWritableDatabase();
Cursor Cursor=db.rawQuery(“从“+表名+”+“+”按“+日期+”描述的顺序选择“+标题+”、“+链接+”、“+发布+”、“+日期+”,空);
开始管理游标(游标);
//TextView tv=新的TextView(此);
//ListView lv1=(ListView)findViewById(R.id.myListView);
ListView lv1=新的ListView(此);
1级。setId(2000年);
//把它们塞进一根大绳里
StringBuilder=新的StringBuilder(“”);
ArrayList代码=新的ArrayList();
while(cursor.moveToNext()){
字符串标题=cursor.getString(0);
//builder.append(“Title:”).append(Title).append(“\n”);
字符串链接=cursor.getString(1);
//builder.append(“Link:”).append(Link).append(“\n”);
字符串post=cursor.getString(2);
//builder.append(“Post:”).append(Post.append(“\n”);
字符串日期=cursor.getString(3);
//builder.append(“日期:”).append(日期).append(“\n”);
代码。添加(标题);
}
ArrayAdapter=新的ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1,代码);
lv1.设置适配器(适配器);
这个.setContentView(lv1);
//tv.setText(builder);
//这个.setContentView(电视);
}

例如,当我添加codes.add(title)时,我希望单击该项目并查看该内容的其余字段(例如链接、说明、日期)。大多数教程都不涉及此arrayadaper设置,因此很难知道该做什么。

您需要在列表视图中添加一个单击侦听器,然后找到一种方法来确定单击了什么并启动新活动。大概是这样的:

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);
      }
}
lv.setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
字符串textOfSelectedItem=((TextView)视图).getText().toString();
//创造我们的意图
Intent i=newintent(getApplicationContext(),NewActivity.class);
i、 putExtra(“地点”,选择项的文本);
星触觉(i);
}
}

}))

上面的代码令人困惑,您应该编写一个扩展CursorAdapter的自定义适配器


您可能想在android开发者网站上查看示例应用。

谢谢您的帮助。我目前不在电脑旁,但如果这证明是解决方案,我会确保并接受这个答案。