我需要帮助我是Android开发的新手。我正在创建这个Starbuzz应用程序。顶级屏幕显示带有Big TextView的星巴克徽标“Starbuzz Coffee”,当用户点击Drink时,它有一个包含3项(饮料,食品商店)的ListView,弹出一个新屏幕, 这是XML中的代码:
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:src = "@drawable/starbucks_logo"
android:id = "@+id/image_id"
android:layout_marginLeft = "10dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text = "@string/starbuzz1"
android:id = "@+id/starbuzz1_id"
android:textSize = "54sp"
android:layout_marginLeft = "120dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text = "@string/starbuzz2"
android:id = "@+id/starbuzz2_id"
android:textSize = "54sp"
android:layout_alignParentTop="true"
android:layout_alignLeft="@+id/starbuzz1_id"
android:layout_alignStart="@+id/starbuzz1_id"
android:layout_marginTop="52dp" />
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:entries="@array/options"
android:layout_below="@+id/starbuzz2_id"
android:id = "@+id/list_2">
</ListView>
以下是用Java填充ListView的代码:
package com.example.android.starbuzz;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
public class TopLevelActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.top_level_activity);
AdapterView.OnItemClickListener itemClick = new AdapterView.OnItemClickListener(){
public void onItemClick(AdapterView <?> listView, View itemView, int position, long id){
if(position == 0){
Intent firstIntent = new Intent(TopLevelActivity.this, Drinks.class);
startActivity(firstIntent);
}
}
};
ListView theList = (ListView) findViewById(R.id.list_2);
theList.setOnItemClickListener(itemClick);
}
}
这里的一切都很完美。当用户点击“饮料”该应用程序进入另一个活动,并显示一个带有ListView 3项(Latte,卡布奇诺,过滤器)的屏幕
以下是XML代码:
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id = "@+id/list_id">
</ListView>
以下是Java中的代码,填充列表:
package com.example.android.starbuzz;
import android.content.Intent;
import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.widget.Adapter;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
public class Drinks extends Activity {
ListView myList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.drinks);
String [] drinks = {"Latte", "Cappuccino", "Filter"};
ListAdapter listAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, drinks);
myList = (ListView) findViewById(R.id.list_id);
myList.setAdapter(listAdapter);
AdapterView.OnItemClickListener listen = new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if(position == 0){
Intent intents = new Intent(Drinks.this, DrinkDetails.class);
startActivity(intents);
}
}
};
myList.setOnItemClickListener(listen);
}
}
这就是一切都错了,当用户点击Latte应用程序崩溃时。我想要的是当用户点击Latte时,我想要开始另一个活动,以及要显示的拿铁的图片,以及拿铁的描述。
以下是我的XML代码尝试完成此任务:
<ImageView
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:id = "@+id/image_id"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id = "@+id/text_1_id"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id = "@+id/text_2_id"/>
以下是我在Java中填充视图的代码:
package com.example.android.starbuzz;
import android.app.Activity;
import android.app.ListActivity;
import android.os.Bundle;
import android.support.annotation.DrawableRes;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListAdapter;
import android.widget.TextView;
public class DrinkDetails extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.drink_details);
ImageView image = (ImageView) findViewById(R.id.image_id);
image.setImageResource(R.drawable.latte_logo);
TextView drinkName = (TextView) findViewById(R.id.text_1_id);
drinkName.setText(R.string.latte);
TextView drinkDescription = (TextView) findViewById(R.id.text_2_id);
drinkDescription.setText(R.string.latteDescription);
}
}
当我运行应用程序时,没有出现任何错误,但当用户点按“拿铁”时,应用程序崩溃。
答案 0 :(得分:-1)
你可以参考这篇文章 How to handle the click event in Listview in android? 并在其上添加onItemClicklistener。 然后把你的逻辑放在这里
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
if(position == 0){
Intent intent = new Intent(Drinks.this, DrinkDetails.class);
startActivity(intent);
}
}
});