简体   繁体   English

如何在gridview中单击缩略图时显示全尺寸图像

[英]how to show full size image on clicking thumbnail in gridview

In my project i want that whenever anyone clicks on thumbnail , full size image should open in an activity which user can zoom .在我的项目中,我希望每当有人点击缩略图时,全尺寸图像应该在用户可以缩放的活动中打开。 but facing problem in passing the url of image (i used arraylist).但是在传递图像的 url 时遇到问题(我使用了 arraylist)。

below is the code下面是代码

import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.Toast;

import java.util.ArrayList;


public class NoticeList_Seminar extends AppCompatActivity {

GridView gridView;
ArrayList<Notice_Activity_Seminar> list;
Notice_List_Adapter_Seminar adapter_seminar = null;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.noticelistlayout_seminar);

    gridView = (GridView) findViewById(R.id.gridView);
    list = new ArrayList<>();
    adapter_seminar = new Notice_List_Adapter_Seminar(NoticeList_Seminar.this, R.layout.noticeitemslayout_seminar, list);
    gridView.setAdapter(adapter_seminar);

    gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            //Intent intent = new Intent(getApplicationContext(), FullImageActivity.class);
            // passing array index
            //intent.putExtra("id",i);
            //startActivity(intent);
            Toast.makeText(getApplicationContext(),"full image", Toast.LENGTH_SHORT).show();
        }
    });

    Cursor cursor = App_Activity_Seminar.sqLiteHelper_seminar.getData("SELECT * FROM NOTICE_SEMINAR");
    list.clear();
    while (cursor.moveToNext()) {
        int id = cursor.getInt(0);
        String name = cursor.getString(1);
        String date = cursor.getString(2);
        byte[] image = cursor.getBlob(3);
        list.add(new Notice_Activity_Seminar(id, name, date, image));
    }
    adapter_seminar.notifyDataSetChanged();
}

} }

code for FullImage activity FullImage 活动的代码

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.ImageView;

import static com.example.shakshi.demo.R.id.imageView;

public class FullImageActivity extends Activity {

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

    // get intent data
   Intent i = getIntent();

    // Selected image id

    int pos = i.getIntExtras("position",0);

    imageView.setImageResource(Notice_List_Adapter_Seminar.noticeList[pos]);


   /* Intent i = getIntent();

    // Selected image id
    int position = i.getExtras().getInt("id");
  Notice_List_Adapter_Seminar imageAdapter = new 
 Notice_List_Adapter_Seminar(FullImageActivity.this);

     ImageView imageView = (ImageView) findViewById(R.id.full_image_view);

imageView.setImageResource(Notice_List_Adapter_Seminar.noticeList[position]); imageView.setImageResource(Notice_List_Adapter_Seminar.noticeList[位置]);

}

} }

changes i have done我所做的改变

 gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {


        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int 
        i, long l) {



            String url = String.valueOf(adapterView.getItemAtPosition(i));
            Intent intent = new Intent(NoticeList_Workshop.this, 
             FullImageActivity.class);
            intent.putExtra("url", url);
            startActivity(intent);

        }
    });

in Full Image Activity在完整图像活动中

String url = getIntent().getExtras().getString("url");


   ImageView imageView = (ImageView) findViewById(R.id.full_image_view);
   imageView.setImageResource(Integer.parseInt(url));    

Use gridViewOnClickListener and Intent .使用gridViewOnClickListenerIntent

GridView grdview = (GridView) findViewById(R.id.gridview);

        grdview.setOnItemClickListener(new AdapterView.OnItemClickListener()
        {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                String url = list.get(position);
                Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
                intent.putExtra("url", url);
                startActivity(intent)
            }
        });

In SecondActivity onCreate() method,SecondActivity onCreate()方法中,

String url = getIntent().getExtras().getString("url");

Set the Source of Imageview = url;设置Imageview = url;的Source Imageview = url;

If you are using Gridview.如果您使用的是 Gridview。 You get onItemClickListener which also gives you the position of the item which got clicked.你得到 onItemClickListener 它还为你提供了被点击的项目的位置。 So in your onItemClickListener you can get the image url from the arraylist at that position and pass it to your next activity.因此,在您的 onItemClickListener 中,您可以从该位置的数组列表中获取图像 url,并将其传递给您的下一个活动。

And if you are using Recyclerview then you can use callback pattern and using that you can send the same url as a String on which the user has clicked to the containing activity.如果您使用的是 Recyclerview,那么您可以使用回调模式,并使用该模式发送与用户单击到包含活动的字符串相同的 URL。 You can then pass this url to the next activity.然后您可以将此网址传递给下一个活动。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM