Java ListView和ArrayAdapter配置,android应用程序
在让ListView与我的DB一起工作了好几个小时之后,我终于设法让它编译了。现在,我知道事情正在正确地进行通信(即,数据库信息到列表视图),我想知道是否有人可以建议使它更有用的方法。我注意到,当我运行应用程序时,listview项目似乎是可点击的,但却毫无用处。我如何向代码中添加这样的内容:当单击某个项目时,它会打开一个包含所有项目信息的新活动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
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开发者网站上查看示例应用。谢谢您的帮助。我目前不在电脑旁,但如果这证明是解决方案,我会确保并接受这个答案。