让我来解释一下自己:如何正确引用布局点击?
正如你所知道的,当你有一个视图必须多次膨胀但改变值时,你可以使用一个GridView或一个ListView。这两个Composite视图有一些方法,如onItemClick
。此方法非常有用,因为它返回点击视图的位置。
通过这个位置您可以执行一些具体任务,如从ArrayList中检索该对象的信息。这里有一个例子:
ArrayList<DocumentInfo> documents;
当你设置一个setOnItemClickListener()
你可以得到正确的值:当你不使用一个GridView或ListView控件,
gallery.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> arg0, View v, int pos, long arg3) {
getDocumentInfoOf(pos);
}
});
public void getDocumentInfoOf(int position){
DocumentInfo doc = documents.get(position);
}
但是,你在你的拥有。你没有一个明确的方法(AFAIK)知道哪个布局膨胀是一个点击(我的意思是像前面的例子,“位置”值)。
我目前在做什么,如下:
for (int i=0; i<10;i++){
RelativeLayout documentInflated = (RelativeLayout) this.mInflater.inflate(R.layout.open_document_per_inflar, null);
documentInflated.setContentDescription(""+i);
documentInflated.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
openDocument(v);
}
});
container.addView(documentInflated);
}
public void openDocument(View v){
int idDocument = Integer.parseInt(v.getContentDescription());
//idDocument is the view clicked
}
你们认为这是这样做的明确的方式?
谢谢!
我可能无法正确解释自己。让我编辑我的问题,并尽快再次检查! – Reinherd
完成。请重新阅读该问题! – Reinherd
好吧,但实际上你在做什么呢?你存储的位置,然后你可以完全按照你的要求访问它(你也可以通过get/setTag()来存储/获取它)为什么这不是写成的? –