【发布时间】:2019-08-03 03:15:22
【问题描述】:
我正在从 head First Android Development 练习这段代码。在这里,如果我从第一个列表视图中单击 Drink,我也会在第二个列表视图中显示数据,例如 com.hfad.starbuzz.Drink@22c6250
谁能指出为什么它以列表方式呈现数据?
第一个用于存储数组值和构造函数的纯 java 类。
package com.hfad.starbuzz;
public class Drink {
private String name; private String description; private int imgresourcesId;
public Drink(String name, String description, int imgresourcesId) {
this.name = name;
this.description = description;
this.imgresourcesId = imgresourcesId; }
public static final Drink [] drinks={
new Drink("Latte", "Acouple of espresso shots with steamed milk ",
R.drawable.latte),
new Drink("Cupuuccino", "cup what is chino,, no ide ",
R.drawable.cappuccino),
new Drink("filter", "all about filter ",
R.drawable.filter),
};
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public int getImgresourcesId() {
return imgresourcesId;
}
public void setImgresourcesId(int imgresourcesId) {
this.imgresourcesId = imgresourcesId;
}}
1)主要活动类
package com.hfad.starbuzz;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AdapterView.OnItemClickListener itemClickListener = new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> listView,
View itemView,
int position,
long id) {
if (position==0) {
Intent intent = new Intent(MainActivity.this,DrinkCategoryActivity.class);
startActivity(intent);
}
}
};
ListView listView =findViewById(R.id.list);
listView.setOnItemClickListener(itemClickListener);
}}
主要活动布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<ImageView
android:layout_width="200dp"
android:layout_height="100dp"
android:src="@drawable/startbuzz"
android:contentDescription="@string/content_description"/>
<ListView
android:id="@+id/list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:entries="@array/option"
>
</ListView>
</LinearLayout>
和第二个列表视图类。它没有任何布局文件。
package com.hfad.starbuzz;
public class DrinkCategoryActivity extends ListActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ListView listDrinks = getListView();
ArrayAdapter<Drink> listAdapter = new ArrayAdapter<Drink>(getApplicationContext(), android.R.layout.simple_list_item_1, Drink.drinks);
listDrinks.setAdapter(listAdapter);
}
@Override
public void onListItemClick(ListView listView,
View itemView,
int position,
long id) {
Intent intent = new Intent(DrinkCategoryActivity.this, DrinkActivity.class);
intent.putExtra(DrinkActivity.EXTRA_DRINKNO, (int) id);
startActivity(intent);
}}
【问题讨论】:
-
您是否只是想实现列出饮料名称?如果是这种情况,请尝试覆盖 toString 方法
-
效果很好。非常感谢
-
如果您为自己的问题找到了一个好的答案,那么请将其作为答案,而不是通过在问题中给出答案来混淆人们。此外,不要将标题编辑为“已解决”或任何内容。问题仍然存在。可以给出答案。
标签: java android listview object arraylist