0

ListView でアイテムをタップしてアクティビティを開いてアイテムの詳細を更新しようとしているアプリを作成しています

問題:

ListView でアイテムをクリックすると、そのアクティビティを開始できず、アイテムの詳細を更新する方法も知りたいです...

各ListViewアイテムに3つのテキストビューとボタンがあります

CartActivity で以下のコードを使用すると、ProductInformationActivity を開くことができません

    ListView mLstView1 = (ListView) findViewById(R.id.listView1);
    CartAdapter mViewCartAdpt = new CartAdapter(CartActivity.this);
mLstView1.setAdapter(mViewCartAdpt);
    mLstView1.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position,
                long id) {

            Intent intent = new Intent(CartActivity.this, com.ProductInformationActivity.class);
            startActivity(intent);
        }
    });

CartAdapter.java:

  public View getView(final int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub

    HashMap<String, String> item = new HashMap<String, String>();
    item = Constants.mItem_Detail.get(position);

    // Setting all values in listview

    title.setText(item.get(com.ProductInformationActivity.KEY_TITLE));
    qty.setText(item.get(com.ProductInformationActivity.KEY_QTY));
    cost.setText(item.get(com.ProductInformationActivity.KEY_COST));
    total.setText(item.get(com.ProductInformationActivity.KEY_TOTAL));

    return vi;

}   
4

3 に答える 3

0

マニフェスト ファイルに Ativity を追加しましたか? application タグにアクティビティを追加する必要があります。

<activity android:name="com.erachnida.restaurant.versionoct.menu.ProductInformationActivity" />
于 2013-04-05T11:50:43.413 に答える
0

あなたの問題は、OnItemClickListenerListView全体に割り当てられてからImageViewに割り当てられていることだと思います。また、ImageViewについては、次をご覧ください。

Intent mInViewCartRefresh = new Intent(activity, CartActivity.class);
activity.startActivity(mInViewCartRefresh);
activity.finish();

ここでは、おそらく ListView を「更新」しようとしていますが、これは間違っています。ListView を更新する場合は、使用するだけです

adapter.notifyDataSetChanged();

これは、 「データソースを変更しました。自分でリフレッシュしたい」ということを示しています。

したがって、私の提案は、「内部」リスナーを削除し、上記のコードのスニペットを削除して、ListView のリスナーのみを残すことです。

Intent intent = new Intent(CartActivity.this, ProductInformationActivity.class);
startActivity(intent);

次に、ListView をクリックすると、int 位置パラメーターからコレクション用の特定のアイテムを取得でき、それを使って好きなことを行うことができます。「アクション」の後、ListView を更新する notifyDataSetChanged() を呼び出す必要があります。

于 2013-04-05T11:54:16.090 に答える
0

このリンクを確認してください。したがって、itemClickListener次の行を入力します。

Intent intent = new Intent(CartActivity.this, ProductInformationActivity.class);
                startActivity(intent);

以下のように:

public OnClickListener mOnTitleClickListener3 = new OnClickListener() {
            public void onClick(View v) {
                final int position = list_v
                        .getPositionForView((View) v.getParent());

                Log.d("you are click on Ratings","you are click on Ratings");
                Intent intent = new Intent(CartActivity.this, ProductInformationActivity.class);
                startActivity(intent);

            }
        };
于 2013-04-05T12:04:10.667 に答える