Java android:onListItemClick不工作

Java android:onListItemClick不工作,java,android,Java,Android,DetailActivity.java public void onListItemClick(ListView listview,View itemView,int position,long id) { ListView lv=(ListView)findViewById(R.id.drinks_lv); Intent intent = new Intent(DrinkCategoryActivity.this, DetailActivity.class); intent.putExtr

DetailActivity.java

public void onListItemClick(ListView listview,View itemView,int position,long  id) {
ListView lv=(ListView)findViewById(R.id.drinks_lv);
Intent intent = new Intent(DrinkCategoryActivity.this,  DetailActivity.class);
intent.putExtra(DetailActivity.EXTRA_DRINKNO,(int)id);
startActivity(intent);

}

代码的第一部分是取自Head first Android Development-2015的DrinkCategoryActivity类。它应该导航到DetailActivity类,但什么也没有发生。listview在单击饮料列表选项时不做任何操作。它只显示第三个活动,不显示任何错误(DetailActivity未启动,它应显示图像、名称和说明。

这是如何在listview中实现单击项的方法

public class DetailActivity extends AppCompatActivity {
    public static final String EXTRA_DRINKNO = "drinkNo";
   @Override
   protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_detail);


   int drinkNo = (int) getIntent().getExtras().get(EXTRA_DRINKNO);
   Drink drink = Drink.drinks[drinkNo];

   ImageView photo =(ImageView)findViewById(R.id.photo);
   photo.setImageResource(drink.getImageResourceId());
   photo.setContentDescription(drink.getName());
   TextView name=(TextView)findViewById(R.id.name);
   name.setText(drink.getName());
   TextView description=(TextView)findViewById(R.id.description);
   description.setText(drink.getDescription());
   }
   }

这是如何在listview中实现单击项

public class DetailActivity extends AppCompatActivity {
    public static final String EXTRA_DRINKNO = "drinkNo";
   @Override
   protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_detail);


   int drinkNo = (int) getIntent().getExtras().get(EXTRA_DRINKNO);
   Drink drink = Drink.drinks[drinkNo];

   ImageView photo =(ImageView)findViewById(R.id.photo);
   photo.setImageResource(drink.getImageResourceId());
   photo.setContentDescription(drink.getName());
   TextView name=(TextView)findViewById(R.id.name);
   name.setText(drink.getName());
   TextView description=(TextView)findViewById(R.id.description);
   description.setText(drink.getDescription());
   }
   }
公共类MainActivity扩展AppCompative实现AdapterView.OnItemClickListener
{
最后的字符串数={“1”、“2”、“3”};
@凌驾
创建时受保护的void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ArrayAdapter=新的ArrayAdapter(this,R.layout.riga,number);
ListView ListView=(ListView)findViewById(R.id.ListView);
setAdapter(适配器);
setOnItemClickListener(this);
}
@凌驾
public void onItemClick(AdapterView adattatore,最终视图组件,内部位置,长id)
{
Toast.makeText(getApplicationContext(),numbers[position],Toast.LENGTH\u LONG.show();
}
}
里加布局

public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener 
{
    final String numbers = {"1","2","3"};

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.riga, numbers);
    ListView listView = (ListView)findViewById(R.id.listView);
    listView.setAdapter(adapter);
    listView.setOnItemClickListener(this);
    }

    @Override
    public void onItemClick(AdapterView<?> adattatore, final View componente, int position, long id )
    {
    Toast.makeText(getApplicationContext(), numbers[position], Toast.LENGTH_LONG).show();
    }
}

活动单元主布局图

<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
android:id="@+id/textView"
android:textSize="36sp" />

这是我的旧应用程序,用于接管使用implements AdapterView.OnItemClickListener按下的数字

公共类MainActivity Extendes AppCompative implements AdapterView.OnItemClickListener
{
最后的字符串数={“1”、“2”、“3”};
@凌驾
创建时受保护的void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ArrayAdapter=新的ArrayAdapter(this,R.layout.riga,number);
ListView ListView=(ListView)findViewById(R.id.ListView);
setAdapter(适配器);
setOnItemClickListener(this);
}
@凌驾
public void onItemClick(AdapterView adattatore,最终视图组件,内部位置,长id)
{
Toast.makeText(getApplicationContext(),numbers[position],Toast.LENGTH\u LONG.show();
}
}
里加布局

public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener 
{
    final String numbers = {"1","2","3"};

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.riga, numbers);
    ListView listView = (ListView)findViewById(R.id.listView);
    listView.setAdapter(adapter);
    listView.setOnItemClickListener(this);
    }

    @Override
    public void onItemClick(AdapterView<?> adattatore, final View componente, int position, long id )
    {
    Toast.makeText(getApplicationContext(), numbers[position], Toast.LENGTH_LONG).show();
    }
}

活动单元主布局图

<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
android:id="@+id/textView"
android:textSize="36sp" />


这是我的旧应用程序,用于接管使用implements AdapterView.OnItemClickListener按下的数字,但我想使用onListItemClick方法实现。我解决了问题。我在DrinkCategory活动类中使用了setcontent视图并将其扩展到活动类,但我没有扩展ListActivity。但我想使用onLi实现stItemClick方法我解决了这个问题。我在DrinkCategory活动类中使用了setcontent视图并将其扩展到活动类,但我没有扩展ListActivity。