2

Web サービスからデータを取得し、それらを sqlite に格納してグリッドに表示します。データにはアイテム ID、アイテム名、アイテム画像が含まれています。アイテムをクリックすると、sqlite からアイテムの ID を取得したいと考えています。アイテムの位置と一緒にグリッド!! どうやってやるの ?

私のコードは::

         gridView.setOnItemClickListener(new OnItemClickListener() 
         {
                public void onItemClick(AdapterView<?> parent, View v, int position, long id)
                {
                    System.err.println("cache_id=="+id);
                    System.err.println("position=="+position);
                    Intent i = new Intent(getApplicationContext(), BookContent.class);
                    i.putExtra("id", position);
                    System.err.println("this is item id::"+v.getId());

                    startActivity(i);

                }
         });

私のimageAdapterクラスは::

private class ItemsAdapter extends BaseAdapter implements ListAdapter
{
    String[] items;
    public ItemsAdapter(Context context,int textViewResourceId,String[] items) 
    {
        this.items = items;
    }
    public View getView( int POSITION, View convertView,ViewGroup parent)
    {
        TextView cap = null ;
        View view = convertView;
        ImageView img = null;
        if (view == null) 
        {
            LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = vi.inflate(R.layout.grid, null);
        }
        img = (ImageView) view.findViewById(R.id.image);
        cap = (TextView) view.findViewById(R.id.caption);
        String bookTitle = mapNames.get(POSITION);
        cap.setText(mapNames.get(POSITION));
        img.setImageBitmap(BitmapFactory.decodeByteArray(map.get(POSITION), 0, map.get(POSITION).length));
        return view;
    }
    public int getCount() 
    {
        return items.length;
    }
    public Object getItem(int position) 
    {
        return position;
    }
    public long getItemId(int position) 
    {
        return position;
    }
}
4

4 に答える 4

1

グリッド項目をクリックしたときに、sqlite データベースから itemid を再度取得する必要はありません。むしろview.setTag(String.valueOf(itemid));、メソッド内のグリッド ビュー要素ごとにこのようなものを設定できますgetView()

onItemClick()、タグを取得します。

public void onItemClick(AdapterView<?> parent, View v, int position, long id)
                {
                   ......................
                    .........................
                    String itemid = (String) v.getTag();
                  ..............................
                     i.putExtra("itemid", itemid);

                }
于 2013-01-30T06:53:49.140 に答える
0

申し訳ありませんが、私は間違った方法を使用しました。以下のアンサーを参照してください。この方法を変更するだけです

public long getItemId(int position) 
{
   return items.get(position).getId();
}

これで、gridView の onItemClick で id の値を取得できるようになりました。

于 2013-01-30T06:09:20.387 に答える
0

IDを配列に保存しないのはなぜですか

String[] items;
int[] ids;
public ItemsAdapter(Context context,int textViewResourceId,String[] items,int[] ids) 
{
    this.items = items;
    this.ids=ids;
}

次に、あなたのoncliklistenerで

gridView.setOnItemClickListener(new OnItemClickListener() 
     {
      public void onItemClick(AdapterView<?> parent, View v, int position, long   id)
            {
                System.err.println("cache_id=="+id);
                System.err.println("position=="+position);
                Intent i = new Intent(getApplicationContext(), BookContent.class);

                 //in this part
                i.putExtra("itemid", itemid);
                i.putExtra("id", this.ids[position]);
                startActivity(i);

            }
     });
于 2013-01-30T07:06:33.700 に答える
0
String items[] items; //your array...
    gridView.setOnItemClickListener(new OnItemClickListener() 
             {
                    public void onItemClick(AdapterView<?> parent, View v, int position, long id)
                    {
                        //System.err.println("cache_id=="+id);
                        //System.err.println("position=="+position);
                       String name =item.get(position).toString();

                        Intent i = new Intent(getApplicationContext(), BookContent.class);
                        i.putExtra("id", position);
                        System.err.println("this is item id::"+v.getId());

                        startActivity(i);

                    }
             });
于 2013-01-30T07:03:44.800 に答える