如何在我的Android应用程序中使用onItemClick?

时间:2013-01-23 12:35:26

标签: java android sqlite listview onitemclick

嗨我的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);
            }
        });

我想要开始一个积极的行动:(

8 个答案:

答案 0 :(得分:2)

这种情况正在发生,因为当您创建intent时,第一个参数是上下文。您正在从onClick()创建意图,因此其中的上下文不是外部活动。意图应将当前活动的上下文作为第一个参数

因此,请使用ShowActivity.thisgetApplicationContext()而不是使用此

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); 


                }
            });