我有这个代码,我在动态添加视图并使用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
向我显示了16908308
的ID。而id应为(200+i)
。
答案 0 :(得分: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()));
}
});
请试试..
答案 1 :(得分: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()));
}
});
答案 2 :(得分:0)
使用此代码items[i].setId(200+i);
,您将ID分配给AutoCompleteTextView
。
以下方法中的arg1
是AutoCompleteTextView
(非自动完成文本视图)的点击视图
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int postion,
long arg3)
试试这段代码
Log.d("success", String.valueOf(arg0.getId()));
答案 3 :(得分: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%有效。
答案 4 :(得分: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()));
}
编辑:
你得到16908308
而不是200+i
,每当我们将id指定为R.id.xx(它的唯一格式不完全是这个)时,android会将其id生成为正整数。你可以在你的R文件中看到它。不确定,但可能是你面临这个问题。无论何时创建新的AutoTextView,它都会生成这样的id。
答案 5 :(得分:-1)
我认为您不需要使用AutoCompleteTextView
来获取ID。
您可以尝试以下代码......
autoCompleteText.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
if(arg0.equals(items[0])){
//do something with first autoCompleteText
}else if(arg0.equals(items[1])){
//do something with second autoCompleteText
}else if(arg0.equals(items[2])){
//do something with third autoCompleteText
}else if(arg0.equals(items[3])){
//do something with fourth autoCompleteText
}else if(arg0.equals(items[4])){
//do something with fifth autoCompleteText
}
}
});
修改强>
使用arraylist而不是数组来避免重复代码
ArrayList<View> items = new ArrayList<View>();
if (items.indexOf(arg0) != -1) {
AutoCompleteTextView autoText = (AutoCompleteTextView) items.get(items.indexOf(arg0));
// do something with your AutoCompleteText
}