【发布时间】:2016-06-10 19:06:14
【问题描述】:
我有以下问题。我构建了一个 listView,然后使用自定义布局 item_event 显示某些数据。这一切都有效。现在我想让应用程序允许我在每次单击 listView 中的一个元素时移动到新的活动。我的 MainMenu 扩展了 ListActivity,因此我可以使用 setListAdapter。我现在如何使用 setOnItemClickListener?我试图创建 ListView 对象,然后引用它,但由于它的 android:id="@android:id/list"/> ,我无法访问它。怎么做?
package com.mysampleapp;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.app.ListActivity;
import com.userpreferencesom.AmazonClientManager;
import com.userpreferencesom.DynamoDBManager;
import java.util.ArrayList;
public class MainMenu extends ListActivity {
//ListView eventsList;
Button newEvent;
Event event= new Event();
//ArrayList<Event> eventList = new ArrayList();
public static AmazonClientManager clientManager = null;
private ArrayAdapter<String> arrayAdapter = null;
private ArrayList<String> labels = null; // list of names of events manly for test)
private ArrayList<Event> items = null; //stores events
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_menu);
clientManager = new AmazonClientManager(this); //CIPEK
new GetEventList().execute(); //calling GetEventList from included class below
newEvent = (Button) findViewById(R.id.new_event_button);
newEvent.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainMenu.this, EventCreationActivity.class);
startActivity(intent);
}
});
}
private void setupActivity() {
Log.v("MOJEMOJEMOJE", event.getName());
}
private class GetEvent extends AsyncTask<Void, Void, Void> {
protected Void doInBackground(Void... voids) {
event = DynamoDBManager.getEvent(""); //in bracket ID number
return null;
}
protected void onPostExecute(Void result) {
setupActivity();
}
}
private class GetEventList extends AsyncTask<Void, Void, Void> {
protected Void doInBackground(Void... inputs) {
labels = new ArrayList<String>();
items = DynamoDBManager.getEventList();
for (Event up : items) {
labels.add(up.getName());
}
return null;
}
protected void onPostExecute(Void result) {
Log.v("Events:", labels.toString());
updateDisplay();
}
}
public void updateDisplay(){
//Using Event Adapter to display data
EventAdapter adapter = new EventAdapter(this, R.layout.item_event, items);
setListAdapter(adapter);
setOnItemClickListener(new AdapterView.OnItemClickListener() { //HERE IT CANNOT BUILD
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(MainMenu.this, EventViewActivity.class);
startActivity(intent);
}
});
}
}
提前谢谢你, 约翰
这是错误日志:
C:\Users\John\Desktop\trial\cos1\HangApp-0.5\app\src\main\java\com\mysampleapp\MainMenu.java
Error:(110, 9) error: cannot find symbol method setOnItemClickListener(<anonymous OnItemClickListener>)
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
:app:compileDebugJavaWithJavac FAILED
Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.
【问题讨论】:
-
如果您包含遇到的错误可能会有所帮助
-
有什么错误吗? Bcoz 你的 setOnItemCliclListener 看起来不错。请同时发布错误消息