Vytvořit klikací obrázek v GridView v Android

hlasů
11

Mám obrazy zobrazené v GridView jako v tomto výukovém programu . Chci, aby bylo možné kliknout na jeden obrázek a provést další akce, a já potřebuji vědět, co obraz byl klepli.

Musím se přidat imageView.onKeyDown (keyCode, událost) ve třídě ImageAdapter? Zde je kód, neboť v současné době existuje:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
  ImageView imageView;
  if (convertView == null) {  
    // if it's not recycled, initialize some attributes
    imageView = new ImageView(mContext);
    imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
    imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
    imageView.setPadding(8, 8, 8, 8);
    //does this need imageView.onKeyDown(keyCode, event)?
  } 
  else {
    imageView = (ImageView) convertView;
  }

  imageView.setImageResource(mThumbIds[position]);
  return imageView;
}

Jak to bude uvedeno, jaké fotografie se klikli? Jak mohu vytvořit správnou rutinu?

Položena 10/04/2009 v 21:50
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
24

Pro GridView můžete použít metodu setOnItemClickListener mít OnItemClickListener posluchače. Že posluchač vám poskytne metodu, kterou je třeba potlačit s podpisem

onItemClick(AdapterView<?> parent, View v, int position, long id)

kde máte pozici položky v síti, který byl klepli a zastává názor, že je uvnitř buňky mřížky. Je to to, co potřebujete?

Odpovězeno 17/04/2009 v 09:25
zdroj uživatelem

hlasů
6

Snažil jsem se výše uvedený způsob getView (konečná pozice int...), si uvědomil, že pozice dostal „reset“ po 28 bodů a postavení, kdy zpět na 0 po 28. položku v GridView.

i podezření, že klíčové slovo final vytváří problém a po jeho odstranění jsem byl schopen se dostat pozic, jak se očekávalo.

Níže je ukázkový kód k události click volána v činnosti, která se představí GridView.

public class MainActivity extends Activity {

ArrayList<Integer> item_ids = new ArrayList<Integer>();

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    item_ids = //get your item ids method

    GridView gridview = (GridView) findViewById(R.id.grid_featured);
    gridview.setAdapter(new ImageAdapter(this));
    gridview.setOnItemClickListener(itemClickListener);

    footer = (Footer)findViewById(R.id.layoutFooter);
    footer.setActivity(this);
}

private OnItemClickListener itemClickListener = new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
    Log.d(TAG,"Position Clicked ["+position+"] with item id ["+item_ids.get(position)+"]");
    }
};

}

Odpovězeno 26/04/2011 v 11:44
zdroj uživatelem

hlasů
6

Byl jsem schopen se dostat na pozici klikl obrazu tím, že poloha finále a přidáním onClick posluchače k ​​imageView. To zaznamenává polohu obrazu, který byl klepli.

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
  ImageView imageView;
  if (convertView == null) {  
    // if it's not recycled, initialize some attributes
    imageView = new ImageView(mContext);
    imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
    imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
    imageView.setPadding(8, 8, 8, 8);


    imageView.setOnClickListener(new View.OnClickListener() {

      @Override
      public void onClick(View view) {
        Log.d("onClick","position ["+position+"]");
      }

    });

  } 
  else {
    imageView = (ImageView) convertView;
  }

  imageView.setImageResource(mThumbIds[position]);
  return imageView;
}
Odpovězeno 11/04/2009 v 16:55
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more