有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在安卓应用程序中使用onItemClick?

嗨,我的安卓应用程序中的onItemClick有问题。我试过了,但是我出错了。我希望在listview中从sqlite数据库获取数据,并可以单击此列表中的某个值以使用此值启动其他活动。有关更多信息,请参阅我的代码:

我的活动:

public class ShowActivity extends ListActivity {

我的方法:

private void ladeDaten() {
        Cursor KlassenCursor = mDatenbank.rawQuery(KLASSEN_SELECT_ROW, null); 
        startManagingCursor(KlassenCursor); 

        安卓.widget.SimpleCursorAdapter KlassenAdapter = new 安卓.widget.SimpleCursorAdapter(this,
                安卓.R.layout.simple_list_item_1, 
                KlassenCursor, 
                new String[] {"name"},
                new int[] {
                安卓.R.id.text1
                });

        setListAdapter(KlassenAdapter);

        ListView lv = (ListView)findViewById(安卓.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);
            }
        });

我想开始一项活动:(


共 (6) 个答案

  1. # 1 楼答案

    设置Intent intent = new Intent(ShowActivity.this,ShowActivity.class);当你在nItemClickListener中使用“this”时,你没有得到活动上下文

  2. # 2 楼答案

    你的意图代码有问题

    Intent intent = new Intent(getapplicationContext(),ShowActivity.class); 
    intent.putExtra("iteid", item); 
    startActivity(intent);
    
  3. # 3 楼答案

    使用

    Intent intent = new Intent(ShowActivity.this,ShowActivity.class);
    

    或者

    Intent intent = new Intent(view.getContext(),ShowActivity.class);
    

    而不是

    Intent intent = new Intent(this,ShowActivity.class);
    

    要启动活动,您需要传递活动上下文,而不是视图

  4. # 4 楼答案

    改变这个

    Intent intent = new Intent(this,ShowActivity.class); 
    

    Intent intent = new Intent(ShowActivity.this,ShowActivity.class); 
    
  5. # 5 楼答案

    在代码中选中import以获取mclickListener()。你用了适配器。他是一个忠实的听众

    删除该导入并导入列表视图。我的听众

    你可以用

    onItemClick(AdapterView、AdapterView、View、, int位置,长值){

  6. # 6 楼答案

    这是因为在创建意图时,第一个参数是上下文。您正在从onClick()创建意图,因此它内部的上下文不是外部活动的上下文。意图应该以当前活动的上下文作为第一个参数

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

    Intent intent = new Intent(getApplicationContext(), SecondActivity.class)
    

    或者

    Intent intent = new Intent(FirstActivity.this, SecondActivity.class)
    

    会成功的

    请随时提出任何进一步的疑问