我已经在电子商务应用程序上工作了一段时间,现在我有一个ListView显示产品列表 - 每个产品= 1个ImageView和一些TextViews - 。
我在ListView上设置了onItemClick侦听器,当我点击其中一个listView产品时,我想要发生的事件是,启动我的新活动,'ProductDetails'显示我点击的产品的更多信息
我已经在其他地方问了这个问题,但我没有得到明确的答案, 他们说我必须创建一个新的'list \ details'项目,但现在这不可能发生,因为我已经在这个项目上工作了20天,并且不能重新开始。
答案 0 :(得分:1)
您无法从TextView
向ImageView
发送Activity
或Activity
。你可以发送的是它的内容。例如,如果您想传递TextView
中的信息,则需要传递其中显示的来源String
(或者从String
中提取TextView
)你可以通过将Bundle
从调用的Activity
传递到被调用者,或者只是将其作为Extra
:
intent.putExtra("string name", value);
并在以下Activity
中获得此数据:
Intent intent = getIntent();
bundle = intent.getExtras();
bundle.getString("string name");
然后在以下Activity
中使用传递的TextView
创建String
。
通过传递它的路径,ImageView
处理相同的方式。
答案 1 :(得分:1)
抱歉,我发布了一个答案,但只是指向另一个网站的链接,因此被删除了: - (
我再次提出可能的解决方案:
在您的第一项活动中,您需要使用intent.putExtra(...)
并使用intent.getExtra(...)
检索第二项活动中的数据。
i.putExtra("title01", yourDataCollection.get(position).get(KEY_TITLE01));
this.title01 = i.getStringExtra("title01");
这里有一个完整的项目:http://www.codeproject.com/Articles/507651/Customized-Android-ListView-with-Image-and-Text
答案 2 :(得分:1)
Android使用意图允许Activity
进行交互。如果您想要显示产品的详细信息,可能您有一个描述该产品的Class
及其所包含的信息,请填写ListView
。如果您允许class Product implements Serializable
使用Intent.putExtra(String name, Serializable obj),则可以在Activity
之间传递产品说明。在ProductDetailsActivity
中,您可以使用:
getIntent(). getSerializableExtra (String name)
检索您在创建的Intent中放置的序列化以启动ProductDetailsActivity
答案 3 :(得分:1)
如果使用Intent
多次传递模型类,也许它可以实现Parcelable
接口以方便使用。例如:
class ProductData implements Parcelable {
protected String name;
protected String someOtherData;
public static final Parcelable.Creator<ProductData> CREATOR = new Parcelable.Creator<ProductData>() {
@Override
public ProductData createFromParcel(Parcel source) {
return new ProductData(source);
}
@Override
public ProductData[] newArray(int size) {
return new ProductData[size];
}
};
public ProductData(){
}
public ProductData(Parcel source){
readFromParcel(source);
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeString(someOtherData);
}
public void readFromParcel(Parcel source){
name = source.readString();
someOtherData = source.readString();
}
// Here goes the rest of your model code
}
然后,您可以使用Activity
Intent
intent.putExtra("product", productData);
然后使用
获取数据ProductData productData = intent.getParcelableExtra("product");