0

私は自分自身を説明しましょう:

ご存知のように、数回インフレートする必要があるが値を変更する必要があるビューがある場合は、GridView または ListView を使用します。これらの 2 つの Composite ビューには、 のようないくつかのメソッドがありonItemClickます。このメソッドは、クリックされたビューの位置を返すため、非常に便利です。

この位置では、そのオブジェクトの情報を ArrayList から取得するなど、いくつかの具体的なタスクを実行できます。次に例を示します。

ArrayList<DocumentInfo> documents;

a を設定するsetOnItemClickListener()と、正しい値を取得できます。

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);
}

ただし、GridView または ListView を使用していない場合は、独自のものになります。膨張したレイアウトがクリックされたものであることを知る明確な方法(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
}

これはこれを行う明確な方法だと思いますか?

ありがとうございました!!!

4

2 に答える 2

0

私があなたの欲求を理解していない限り...

      @Override
        public void onClick(View v) {
            openDocument(v);
        }

vクリックされているビューです。あなたのコードは、あなたが望んでいることをするはずです。あなたは実際に何が起こっているのを見ていますか?

于 2013-10-10T07:26:38.750 に答える