Java 尝试将常规列表视图转换为可单击列表视图
我通过读取一个预先制作好的数据库启动了这个程序,并将其显示在一个列表上,我目前正试图将列表转换为一个可点击的列表,打开一个新的片段。这是我当前正在运行的代码。注释掉的部分是当前的问题Java 尝试将常规列表视图转换为可单击列表视图,java,android,listview,Java,Android,Listview,我通过读取一个预先制作好的数据库启动了这个程序,并将其显示在一个列表上,我目前正试图将列表转换为一个可点击的列表,打开一个新的片段。这是我当前正在运行的代码。注释掉的部分是当前的问题 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button b
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button b1 =(Button) findViewById(android.R.id.button1);
db = new MyDatabase(this);
b1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
schedule = db.getSchedule();
ListView listView = (ListView) findViewById(R.id.list);
//listView.setOnItemClickListener(this);
listView.setAdapter(new SimpleCursorAdapter(
MainActivity.this,
R.layout.row,
schedule,
new String[] {"fName", "Calories", "Protein", "Carbs" },
new int[] { R.id.textView1, R.id.textView2, R.id.textView3, R.id.textView4 },
0));
schedule = db.getSchedule();
ListView listView2 = (ListView) findViewById(R.id.list2);
listView2.setAdapter(new SimpleCursorAdapter(
MainActivity.this,
R.layout.row,
schedule,
new String[] {"fName", "Calories", "Protein", "Carbs" },
new int[] { R.id.textView1, R.id.textView2, R.id.textView3, R.id.textView4 },
0));
}
});
}
public void onItemClick(AdapterView<?> l, View v, int position, long id) {
Log.i("HelloListView", "You clicked Item: " + id + " at position:" + position);
// Then you start a new Activity via Intent
Intent intent = new Intent();
intent.setClass(this, Activity2.class);
intent.putExtra("position", position);
// Or / And
intent.putExtra("id", id);
startActivity(intent);
}
listView.setOnItemClickListenerthis;将不起作用,因为它正在应用于android.view.view.OnClickListener。我一直在尝试修改b1.setOnClickListenernew View.OnClickListener以尝试更改其参数,但我没有得到任何运气。是否有一个我没有看到的简单解决方案,或者我需要重新构建此代码以围绕一个可点击列表旋转。谢谢 简单地说,将代码行放在活动的onCreate中,而不是按钮的onClick中,然后将AdapterView.OnItemClickListener实现到您的活动中
ListView listView = (ListView) findViewById(R.id.list);
listView.setOnItemClickListener(this);
现在在线listView.setOnItemClickListenerthis;这是指您的活动类和实现的接口,onItemClick可以工作
如果您的活动是ListActivity,则不需要listView.setOnItemClickListenerthis;此行。将活动更改为ListActivity,并重写ListActivity类的onListItemClick方法。将所有代码放在listener的onItemClick中 onListItemClick。使用MainActivity.this作为您的侦听器,这样它就不会引用您的click侦听器