我通过读取预制数据库启动了这个程序并将其显示在列表中,我目前正在尝试将列表转换为可打开的新列表的可点击列表。这是我目前正在运行的代码。注释掉的部分是当前的问题。
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.setOnItemClickListener(本);将无法正常工作,因为它被应用于android.view.View.OnClickListener。我一直在尝试修改b1.setOnClickListener(新的View.OnClickListener(),试图改变它的参数,但我没有得到任何运气。有一个简单的解决方案我没有看到或做我需要重新构建此代码以围绕可点击列表。谢谢!
答案 0 :(得分:0)
简单,将以下代码行放在Activity的onCreate()
而不是按钮的onClick()
中,然后将AdapterView.OnItemClickListener
实施到您的Activity。
ListView listView = (ListView) findViewById(R.id.list);
listView.setOnItemClickListener(this);
现在在线listView.setOnItemClickListener(this);
,指的是您的活动类和已实施的界面,onItemClick
将起作用。
如果您的活动是ListActivity
,则此行不需要listView.setOnItemClickListener(this);
。
答案 1 :(得分:0)
将Activity更改为ListActivity并覆盖ListActivity类的onListItemClick方法。将所有代码放在监听器的onItemClick中 onListItemClick。