1

我一直在研究电子商务应用程序,现在我有一个显示产品列表的 ListView - 每个产品 = 1 个 ImageView 和一些 TextViews-。

我在该 ListView 上设置了一个 onItemClick 侦听器,当我单击该 listView 产品之一时,我希望发生的事件是,启动 i 新 Activity,“ProductDetails”,它显示有关我单击的产品的更多信息。

我已经在其他地方问过这个问题,但我没有得到明确的答案,他们说我必须创建一个新的 'list\details' 项目,但现在不能这样做,因为我正在努力项目大概20天,不能重新开始。

4

4 回答 4

1

抱歉,我已经发布了一个答案,但只是指向另一个网站的链接,所以它被删除了:-(

在这里,我再次提出可能的解决方案:

在您的第一个活动中,您需要使用intent.putExtra(...)和检索第二个活动中的数据intent.getExtra(...)

示例活动 1:

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

于 2013-04-20T23:58:34.620 回答
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");
于 2013-10-31T11:30:49.840 回答
1

您不能发送 aTextViewImageViewfrom Activityto Activity。你可以发送的是它的内容。因此,例如,如果您想从 传递信息,TextView则需要传递String显示在那里的源(或String从 中提取TextView),您可以通过将Bundle调用传递给被调用的传递 aActivity或简单地将其作为Extra

intent.putExtra("string name", value);

在下面Activity你会得到这个数据:

Intent intent = getIntent();
bundle = intent.getExtras();
bundle.getString("string name");

然后在下面Activity创建一个TextView带有传递的String. ImageView通过传递它的路径来处理相同的方式。

于 2013-04-20T23:44:46.803 回答
1

Android 使用意图来允许Activitys 进行交互。如果您想显示产品的详细信息,可能您有一个Class描述该产品的信息,并使用它包含的信息填写您的ListView. 如果你让class Product implements Serializable你可以使用 Intent.putExtra(String name, Serializable obj),在 s 之间传递产品描述Activity。在ProductDetailsActivity您可以使用:

getIntent(). getSerializableExtra (String name)

检索您放置在您创建的 Intent 中的可序列化开始ProductDetailsActivity

于 2013-04-21T07:23:25.110 回答