簡體   English   中英

在Android中的GridView中創建可單擊的圖像

[英]Create a clickable image in a GridView in Android

我在本教程中將圖像顯示在GridView中。 我希望能夠點擊單個圖像並執行其他事件,我需要知道點擊了什么圖像。

我是否必須在ImageAdapter類中添加imageView.onKeyDown(keyCode,event)? 這是當前存在的代碼:

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

它將如何顯示點擊的圖像? 如何創建正確的處理程序?

對於GridView,您可以使用setOnItemClickListener方法來擁有OnItemClickListener偵聽器。 該偵聽器將為您提供一個必須使用簽名覆蓋的方法

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

在哪里可以獲得單擊的網格中項目的位置以及網格單元格內的視圖。 這就是你需要的嗎?

我嘗試了上面提到的方法getView(final int position ...)意識到位置在28個項目之后得到“重置”,並且在gridview中第28個項目之后回到0的位置。

我懷疑最后一個關鍵字正在創建問題,並在刪除它后,我能夠按預期獲得位置。

下面是一個示例代碼,在展示gridview的活動中調用click事件。

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)+"]");
    }
};

}

通過使位置最終並向imageView添加onClick偵聽器,我能夠獲得所點擊圖像的位置。 這會記錄所單擊圖像的位置。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM