1

そのGridViewアダプターはImageViewレイアウトから作成します。すべての画像は、IDがから取得されURLsたデータベースに関してダウンロードされます。たとえば、ビューに。が付いたアイテムが表示されているとし ます。GridViewアイテムは動的であるため、位置(0から開始)では、GridView上のアイテムを実際に識別できません。データベースアイテムIDからその画像を識別する他の方法はありますか?item IDsJSONArrayID: 1,3,4,7

public OnItemClickListener ClickListner = new OnItemClickListener()
{
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        //Toast.makeText(getApplicationContext(), 
        //      ""+position, Toast.LENGTH_SHORT).show();

        //Identification code for the item to be added here

        Intent view = 
                new Intent(main.this, View.class);
        view.putExtra("ID", id); 
        //expected to have an ID equal to database item ID
        startActivity(view);
    }

};
4

2 に答える 2

6

最初のオプション (良い方法)

アダプターへの参照を保持します(または、呼び出して取得してparent.getAdapter()からキャストします)

getItem(position)アダプターで、アダプターを埋めるために使用したオブジェクトを返すようにオーバーライドしたことを確認してください (おそらく、 return arrayList.getItem(position)BaseAdapter を使用した場合のようなものです)。

あなたが呼び出すアダプターでgetItem(position)、これはあなたにまったく同じオブジェクトを与えるので、今必要なすべての情報を持っているはずです

2番目のオプション(簡単な方法)

呼び出しでsetTag() then を使用して gridviewitem のビューに情報を入れることができ、そこに一意の ID がありますonItemClickgetTag()

于 2012-06-02T07:46:47.903 に答える
1

POJO クラスを使用して、そのクラスで Image の URL と ID を設定し、同じものを作成して ArrayList を作成し、それを Adapter クラスに渡すことができます。これにより、ImageView と ImageID がデータベースからバインドされます。そして、内部onItemClick()では簡単に使用できます

 POJO pojo = listview.getAdapter().getitem(position);
 int id = pojo.getId();
于 2012-06-02T08:06:42.963 に答える