2016-08-06 8 views
0

こんにちは私はイメージのグリッドビューのコードを持っています。グリッドの各イメージをクリックすると空のレイアウトが開きます 最初のイメージをクリックすると大きなサイズで開くことができますandroidのイメージのクリックグリッドビュー

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.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.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

Parcelableオブジェクトを渡すことができる、というたら、我々はあなたがしようとしているものを知っているように、

あなたは、第二のアクティビティコードを表示することができますか? –

答えて

0

オブジェクトをアクティビティからアダプタに渡してレンダリングします。

現在、アダプタからオブジェクトを作成してレンダリングしていますが、これはプログラミングの習慣です。

オブジェクトをアクティビティから渡すと、オブジェクトをインテントとともに次のアクティビティに渡すことができ、要件を満たすことができます。

これは問題への唯一の方法です。

+0

まだ、オブジェクトは2番目のアクティビティにクリックリスナーを通過する必要があります –

+0

あまりにもありがとう.. – mh9

1

まず、アダプタはリストのみを保持します。アクティビティからオブジェクトを追加し、そこでリストを渡します。コードで

、あなたの代わりにArrayAdapter<Item>代わりのBaseAdapterを延長したい場合は今

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

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

、あなたはいくつかの有用な方法の利点を取ることができます。例えば、

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

さて、あなたがこの回答の範囲外である、public class Item implements 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

関連する問題