-1

setId() メソッドを使用してビューを動的に追加し、ID を割り当てるこのコードがあります。問題は、getId メソッドを使用して Id を取得すると、logcat でかなり奇妙な結果が得られることです。以下はコードです:

for(int i=0;i<10;i++){
    row[i]=new LinearLayout(this);

    items[i]=new AutoCompleteTextView(this);
    items[i].setHint("Enter Item Name");
    items[i].setAdapter(adapter);
    items[i].setThreshold(1);
    items[i].setId(200+i);
    items[i].setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {

            Log.d("success", String.valueOf(arg1.getId()));
            //quants[arg1.getId()-1000].setText(db.getStockStatus(db.getItemCode(arg0.getItemAtPosition(arg2).toString())));
        }
    });
}

logcatとしてIDを表示し16908308ます。一方、id は である必要があります(200+i)

4

6 に答える 6

0

コードでは、クリックしたビューonItemClickを取得できます。position

を使用してクリックビューの値を取得する必要があります

String.valueOf(items[position].getId())

アップデート:

@Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int position,long arg3) {

            Log.d("val", String.valueOf(items[position].getId()));
        }
    });

valタグに何が印刷されていますか。

100% うまくいきます。

于 2013-09-21T06:30:47.807 に答える
0

使用する、

...

int id=200+i;
items[i].setId(id);

//クリックイベント

 @Override
        public void onItemClick(AdapterView<?> arg0, View view, int pos,
                long arg3) {

            Log.d("success", String.valueOf(view.getId()));

        }

編集:

16908308id を R.id.xx として割り当てるたびに の代わりに取得200+iします (正確にはこれではない唯一の形式) android は、その id を正の整数として生成します。Rファイルで確認できます。よくわかりませんが、この問題に直面している可能性があります。新しい AutoTextView を作成するたびに、そのような ID が生成されます。

于 2013-09-21T06:46:58.290 に答える
0
items[i].setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int position,
                long arg3) {
            // 
            Log.d("success", String.valueOf(position.getId()));

        }
    });

試してみてください..

于 2013-09-21T06:19:48.777 に答える
0

これを試してください

items[i].setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int position,
                long arg3) {
            // 
            Log.d("success", String.valueOf(items[position].getId()));

        }
    });
于 2013-09-21T06:24:02.923 に答える