嗨我的Android应用程序中的onItemClick有问题。我尝试但我得到一个错误。我希望我从listview中的sqlite数据库中获取数据,并且可以单击此列表中的值以使用此值启动其他actitiy。请参阅我的代码以获取更多信息:
我的行为:
public class ShowActivity extends ListActivity {
我的方法:
private void ladeDaten() {
Cursor KlassenCursor = mDatenbank.rawQuery(KLASSEN_SELECT_ROW, null);
startManagingCursor(KlassenCursor);
android.widget.SimpleCursorAdapter KlassenAdapter = new android.widget.SimpleCursorAdapter(this,
android.R.layout.simple_list_item_1,
KlassenCursor,
new String[] {"name"},
new int[] {
android.R.id.text1
});
setListAdapter(KlassenAdapter);
ListView lv = (ListView)findViewById(android.R.id.list);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent,View view,int position,long id){
Cursor cursor = (Cursor)parent.getItemAtPosition(position);
String item = cursor.getString(cursor.getColumnIndex("name"));
Intent intent = new Intent(this,ShowActivity.class); //here is the error
intent.putExtra("iteid", item);
startActivity(intent);
}
});
}
我的布局: ...
</ListView>
...
我的错误:
The constructor Intent(new AdapterView.OnItemClickListener(){}, Class<ShowActivity>) is undefined
我该怎么办? :(
更新
public void onItemClick(AdapterView<?> parent,View view,int position,long id){
Cursor cursor = (Cursor)parent.getItemAtPosition(position);
String item = cursor.getString(cursor.getColumnIndex("name"));
Intent intent = new Intent(ShowDayActitiy,ShowDayActivity.class); //here is the error
intent.putExtra("iteid", item);
startActivity(intent);
}
});
我想要开始一个积极的行动:(
答案 0 :(得分:2)
这种情况正在发生,因为当您创建intent时,第一个参数是上下文。您正在从onClick()创建意图,因此其中的上下文不是外部活动。意图应将当前活动的上下文作为第一个参数
因此,请使用ShowActivity.this
或getApplicationContext()
而不是使用此
Intent intent = new Intent(getApplicationContext(), SecondActivity.class)
或
Intent intent = new Intent(FirstActivity.this, SecondActivity.class)
会做到这一点。
请随时再提出疑问
答案 1 :(得分:1)
更改此
Intent intent = new Intent(this,ShowActivity.class);
到
Intent intent = new Intent(ShowActivity.this,ShowActivity.class);
答案 2 :(得分:1)
使用
Intent intent = new Intent(ShowActivity.this,ShowActivity.class);
或
Intent intent = new Intent(view.getContext(),ShowActivity.class);
而不是
Intent intent = new Intent(this,ShowActivity.class);
要启动Activity,您需要传递Activity上下文而不是视图
答案 3 :(得分:1)
您的意图代码存在问题
Intent intent = new Intent(getapplicationContext(),ShowActivity.class);
intent.putExtra("iteid", item);
startActivity(intent);
答案 4 :(得分:1)
在代码中检查导入OnItemClickListener()。您使用了adapter.onitemClickListener。
删除该导入并导入 ListView.onItemClickListener 。
您可以使用
onItemClick(AdapterView adapterView,View视图, int position,long value){}
答案 5 :(得分:1)
在onItemClickListener中使用“this”时设置Intent intent = new Intent(ShowActivity.this,ShowActivity.class);
,你没有得到Activity上下文。
答案 6 :(得分:1)
AdapterView父级
使用parent.getitematpostion(postion).toString()。它会对你有帮助。
答案 7 :(得分:-1)
请更正密码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.showroom);
initView();
ListView list = getListView();
list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if(dialog != null) dialog.dismiss();
Dialog_Sh_Adapter task = new Dialog_Sh_Adapter(GStore.this, data);
setListAdapter(task);
}
});