2016-08-06 37 views
0

喜圖像的網格視圖我有代碼圖片的網格視圖,當我點擊網格的每個圖像它打開空的佈局 ,但我想,當我點擊第一個圖像,以便與更大尺寸我的意思是打開調用我點擊 這是主要如何點擊機器人

import android.content.Intent; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.GridView; 

public class fitgridview extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_fitgridview); 
     GridView gridView = (GridView)findViewById(R.id.gridview); 
     gridView.setAdapter(new MyAdapter(this)); 
     gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
       // Send intent to SingleViewActivity 
       Intent i = new Intent(getApplicationContext(), SingleViewActivity2.class); 

       // Pass image index 
       i.putExtra("id", position); 
       startActivity(i); 
      } 
     }); 
    } 
} 

的代碼,這是myAdapter Java類的代碼相同的圖像: -

import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.ImageView; 
import android.widget.TextView; 

import java.util.ArrayList; 
import java.util.List; 

/** 
* Created by lenovo on 06/08/2016. 
*/ 
public class MyAdapter extends BaseAdapter { 
    private final List<Item> mItems = new ArrayList<Item>(); 
    private final LayoutInflater mInflater; 

    public MyAdapter(Context context) { 
     mInflater = LayoutInflater.from(context); 

     mItems.add(new Item("Red",  R.drawable.ic_menu_camera)); 
     mItems.add(new Item("Magenta", R.drawable.ic_menu_gallery)); 
     mItems.add(new Item("Dark Gray", R.drawable.ic_menu_manage)); 
     mItems.add(new Item("Gray",  R.drawable.ic_menu_send)); 
     mItems.add(new Item("Green",  R.drawable.ic_menu_share)); 
     mItems.add(new Item("Cyan",  R.drawable.ic_menu_slideshow)); 
     mItems.add(new Item("Red",  R.drawable.ic_menu_camera)); 
     mItems.add(new Item("Magenta", R.drawable.ic_menu_gallery)); 
     mItems.add(new Item("Dark Gray", R.drawable.ic_menu_manage)); 
     mItems.add(new Item("Gray",  R.drawable.ic_menu_send)); 
     mItems.add(new Item("Green",  R.drawable.ic_menu_share)); 
     mItems.add(new Item("Cyan",  R.drawable.ic_menu_slideshow)); 

    } 

    @Override 
    public int getCount() { 
     return mItems.size(); 
    } 

    @Override 
    public Item getItem(int i) { 
     return mItems.get(i); 
    } 

    @Override 
    public long getItemId(int i) { 
     return mItems.get(i).drawableId; 
    } 

    @Override 
    public View getView(int i, View view, ViewGroup viewGroup) { 
     View v = view; 
     ImageView picture; 
     TextView name; 

     if (v == null) { 
      v = mInflater.inflate(R.layout.grid_item, viewGroup, false); 
      v.setTag(R.id.picture, v.findViewById(R.id.picture)); 
      v.setTag(R.id.text, v.findViewById(R.id.text)); 
     } 

     picture = (ImageView) v.getTag(R.id.picture); 
     name = (TextView) v.getTag(R.id.text); 

     Item item = getItem(i); 

     picture.setImageResource(item.drawableId); 
     name.setText(item.name); 

     return v; 
    } 

    private static class Item { 
     public final String name; 
     public final int drawableId; 

     Item(String name, int drawableId) { 
      this.name = name; 
      this.drawableId = drawableId; 
     } 
    } 
} 

,這是SquareImageView java類: -

import android.content.Context; 
import android.util.AttributeSet; 
import android.widget.ImageView; 

/** 
* Created by lenovo on 06/08/2016. 
*/ 
public class SquareImageView extends ImageView { 
    public SquareImageView(Context context) { 
     super(context); 
    } 

    public SquareImageView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public SquareImageView(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
    } 

    @Override 
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
     super.onMeasure(widthMeasureSpec, heightMeasureSpec); 
     setMeasuredDimension(getMeasuredWidth(), getMeasuredWidth()); //Snap to width 
    } 
} 

我怎麼能叫每一個圖像,當我點擊它?我應該寫在SingleViewActivity2做我要做什麼 幫助我和非常感謝

+0

你能告訴第二個活動代碼,讓我們知道你已經嘗試過什麼? –

回答

0

將對象從活動傳遞到適配器,然後呈現。

當前創建和渲染適配器對象是一個編程習慣。

,當你從一個活動傳遞對象,那麼你可以傳遞對象,意圖下一個活動,你會實現你的要求。

您的問題的唯一途徑。

+0

不完全是,對象需要雖然點擊收聽到第二活動 –

+0

謝謝你太.. – mh9

1

首先,適配器只保存一個列表。您可以從活動添加對象並將其傳入列表中。

在代碼中,

// Fields 
private List<Item> mItems = new ArrayList<Item>(); 
private MyAdapter mAdapter; 

// onCreate 
mAdapter = new MyAdapter(this, mItems); 
gridView.setAdapter(mAdapter); 

現在,如果你去繼承ArrayAdapter<Item>而不是BaseAdapter,你可以採取的一些有用的方法的優勢。例如,現在

mAdapter.add(new Item(...)); 

,建議你研究如何做public class Item implements Parcelable,這是這個答案的範圍之內。

一旦你的,你可以通過活動之間Parcelable對象

gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
      // Send intent to SingleViewActivity 
      Intent i = new Intent(getApplicationContext(), SingleViewActivity2.class); 

      // Pass image item 
      i.putExtra("item", mAdapter.getItem(position)); 
      startActivity(i); 
     } 
    }); 
+0

非常感謝您一直留有我一天要傳遞 – mh9