有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在单击CardView和RecyclerView时打开全尺寸图像

当我点击CardView时,我试图打开一个全尺寸图像。我已经设法打开了新的活动,但不知道如何在其中显示图像

时事通讯活动。java

public class NewsletterActivity extends AppCompatActivity {

List<NewsletterAdapter> NewsletterAdapter1;

RecyclerView recyclerView;

RecyclerView.LayoutManager recyclerViewlayoutManager;

RecyclerView.Adapter recyclerViewadapter;

String GET_JSON_DATA_HTTP_URL = 
"http://academypk.info/eleganceschool/jsonfiles/getnewsletter.php";
String JSON_IMAGE_TITLE_NAME = "quarter";
String JSON_YEAR = "year";
String JSON_IMAGE_URL = "path";

JsonArrayRequest jsonArrayRequest ;

RequestQueue requestQueue ;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_newsletter);

    NewsletterAdapter1 = new ArrayList<>();

    recyclerView = (RecyclerView) findViewById(R.id.recyclerview1);

    recyclerView.setHasFixedSize(true);

    recyclerViewlayoutManager = new LinearLayoutManager(this);

    recyclerView.setLayoutManager(recyclerViewlayoutManager);


    JSON_DATA_WEB_CALL();


}

public void JSON_DATA_WEB_CALL(){

    jsonArrayRequest = new JsonArrayRequest(GET_JSON_DATA_HTTP_URL,

            new Response.Listener<JSONArray>() {
                @Override
                public void onResponse(JSONArray response) {

                    JSON_PARSE_DATA_AFTER_WEBCALL(response);
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {

                }
            });

    requestQueue = Volley.newRequestQueue(this);

    requestQueue.add(jsonArrayRequest);
}

public void JSON_PARSE_DATA_AFTER_WEBCALL(JSONArray array){

    for(int i = 0; i<array.length(); i++) {

        NewsletterAdapter NewsletterAdapter2 = new NewsletterAdapter();

        JSONObject json = null;
        try {

            json = array.getJSONObject(i);


NewsletterAdapter2.setImageTitleName(json.getString(JSON_IMAGE_TITLE_NAME));

            NewsletterAdapter2.setYear(json.getString(JSON_YEAR));


NewsletterAdapter2.setImageServerUrl(json.getString(JSON_IMAGE_URL));

        } catch (JSONException e) {

            e.printStackTrace();
        }
        NewsletterAdapter1.add(NewsletterAdapter2);
    }

    recyclerViewadapter = new 
NewsletterRecyclerViewAdapter(NewsletterAdapter1, this);

    recyclerView.setAdapter(recyclerViewadapter);
   }
}

。java

public class NewsletterAdapter {

public String ImageServerUrl;
public String ImageTitleName;
public String year;

public String getImageServerUrl() {
    return ImageServerUrl;
}

public void setImageServerUrl(String imageServerUrl) {
    this.ImageServerUrl = imageServerUrl;
}

public String getImageTitleName() {
    return ImageTitleName;
}

public void setImageTitleName(String ImageTitleName) {
    this.ImageTitleName = ImageTitleName;
}

public String getYear() {
    return year;
}

public void setYear(String year) {
    this.year = year;
}

}

时事通讯回收服务适配器。java

public class NewsletterRecyclerViewAdapter extends 
        RecyclerView.Adapter<NewsletterRecyclerViewAdapter.ViewHolder> {

        Context context;

        List<NewsletterAdapter> getNewsletterAdapter;

        ImageLoader imageLoader1;

        public NewsletterRecyclerViewAdapter(List<NewsletterAdapter> 
        getNewsletterAdapter, Context context){

            super();
            this.getNewsletterAdapter = getNewsletterAdapter;
            this.context = context;
        }

        @Override
        public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

            View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.newsletter_recyclerview_items, parent, false);

            ViewHolder viewHolder = new ViewHolder(v);

            return viewHolder;
        }

        @Override
        public void onBindViewHolder(ViewHolder Viewholder, int position) {

            NewsletterAdapter getNewsletterAdapter1 =  getNewsletterAdapter.get(position);

            imageLoader1 = ServerImageParseAdapter.getInstance(context).getImageLoader();

            imageLoader1.get(getNewsletterAdapter1.getImageServerUrl(),
                    ImageLoader.getImageListener(
                            Viewholder.networkImageView,//Server Image
                            R.mipmap.ic_launcher,//Before loading server image the default showing image.
                            安卓.R.drawable.ic_dialog_alert //Error image if requested image dose not found on server.
                    )
            );

            Viewholder.networkImageView.setImageUrl(getNewsletterAdapter1.getImageServerUrl(), imageLoader1);

            Viewholder.ImageTitleNameView.setText(getNewsletterAdapter1.getImageTitleName());

            Viewholder.YearView.setText(getNewsletterAdapter1.getYear());

        }

        @Override
        public int getItemCount() {

            return getNewsletterAdapter.size();
        }

        class ViewHolder extends RecyclerView.ViewHolder{

            public TextView ImageTitleNameView;
            public TextView YearView;
            public NetworkImageView networkImageView ;

            public ViewHolder(View itemView) {

                super(itemView);

                ImageTitleNameView = (TextView) itemView.findViewById(R.id.textView_item) ;

                YearView = (TextView) itemView.findViewById(R.id.textView_item1) ;

                networkImageView = (NetworkImageView) itemView.findViewById(R.id.VollyNetworkImageView1) ;

                itemView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {

                        Intent intent = new Intent(v.getContext(), SecondPage.class);
                        v.getContext().startActivity(intent);
                        Toast.makeText(v.getContext(), "Image not found", Toast.LENGTH_SHORT).show();
                    }
                });


            }

        }
    }

ServerImageParseAdapter。java

 public class ServerImageParseAdapter {

    public static ServerImageParseAdapter SIAdapter;

    public static Context context1;

    public RequestQueue requestQueue1;

    public ImageLoader Imageloader1;

    public Cache cache1 ;

    public Network networkOBJ ;

    LruCache<String, Bitmap> LRUCACHE = new LruCache<String, Bitmap>(30);

    private ServerImageParseAdapter(Context context) {

        this.context1 = context;

        this.requestQueue1 = RQ();

        Imageloader1 = new ImageLoader(requestQueue1, new ImageLoader.ImageCache() {

            @Override
            public Bitmap getBitmap(String URL) {

                return LRUCACHE.get(URL);
            }

            @Override
            public void putBitmap(String url, Bitmap bitmap) {

                LRUCACHE.put(url, bitmap);
            }
        });
    }

    public ImageLoader getImageLoader() {

        return Imageloader1;
    }

    public static ServerImageParseAdapter getInstance(Context SynchronizedContext) {

        if (SIAdapter == null) {

            SIAdapter = new ServerImageParseAdapter(SynchronizedContext);
        }
        return SIAdapter;
    }

    public RequestQueue RQ() {

        if (requestQueue1 == null) {

            cache1 = new DiskBasedCache(context1.getCacheDir());

            networkOBJ = new BasicNetwork(new HurlStack());

            requestQueue1 = new RequestQueue(cache1, networkOBJ);

            requestQueue1.start();
        }
        return requestQueue1;
    }
    }

第二页。java

public class SecondPage extends Activity {

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

活动时事通讯。xml

 <RelativeLayout xmlns:安卓="http://schemas.安卓.com/apk/res/安卓"
    xmlns:tools="http://schemas.安卓.com/tools"
    安卓:layout_width="match_parent"
    安卓:layout_height="match_parent"
    tools:context="info.techabyte.parentsapp.newsletter.NewsletterActivity">

    <TextView
        安卓:layout_width="match_parent"
        安卓:layout_height="wrap_content"
        安卓:text="@string/newsletterheading"
        安卓:background="@color/colorAccent"
        安卓:textSize="20sp"
        安卓:textStyle="bold"
        安卓:textColor="@color/colorHeadings"
        安卓:gravity="center_horizontal" />

    <安卓.support.v7.widget.RecyclerView
        安卓:id="@+id/recyclerview1"
        安卓:layout_width="fill_parent"
        安卓:layout_height="fill_parent" />

    </RelativeLayout>

时事通讯\u回收查看\u项目。xml

<?xml version="1.0" encoding="utf-8"?>
<安卓.support.v7.widget.CardView
    xmlns:安卓="http://schemas.安卓.com/apk/res/安卓"
    xmlns:card_view="http://schemas.安卓.com/apk/res-auto"
    安卓:id="@+id/cardview1"
    安卓:layout_width="match_parent"
    安卓:layout_height="wrap_content"
    card_view:cardElevation="3dp"
    card_view:contentPadding="3dp"
    card_view:cardCornerRadius="3dp"
    card_view:cardMaxElevation="3dp"
    >


    <RelativeLayout
        安卓:layout_width="fill_parent"
        安卓:layout_height="wrap_content">

        <com.安卓.volley.toolbox.NetworkImageView
            安卓:id="@+id/VollyNetworkImageView1"
            安卓:layout_width="150dp"
            安卓:layout_height="100dp"
            安卓:src="@mipmap/ic_launcher"/>

        <TextView
            安卓:layout_width="wrap_content"
            安卓:layout_height="wrap_content"
            安卓:textAppearance="?安卓:attr/textAppearanceLarge"
            安卓:text="@string/quarter"
            安卓:id="@+id/textView_item"
            安卓:layout_centerVertical="false"
            安卓:layout_toRightOf="@+id/VollyNetworkImageView1"
            安卓:layout_toEndOf="@+id/VollyNetworkImageView1"
            安卓:layout_marginLeft="20dp"/>

        <TextView
            安卓:layout_width="wrap_content"
            安卓:layout_height="wrap_content"
            安卓:textAppearance="?安卓:attr/textAppearanceLarge"
            安卓:text="@string/year"
            安卓:id="@+id/textView_item1"
            安卓:layout_centerVertical="false"
            安卓:layout_toRightOf="@+id/VollyNetworkImageView1"
            安卓:layout_toEndOf="@+id/VollyNetworkImageView1"
            安卓:layout_below="@+id/textView_item"
            安卓:layout_marginLeft="20dp"/>

    </RelativeLayout>

    </安卓.support.v7.widget.CardView>

第二页。xml

<LinearLayout xmlns:安卓="http://schemas.安卓.com/apk/res/安卓"
    安卓:orientation="vertical" 安卓:layout_width="match_parent"
    安卓:background="#ffffff"
    安卓:layout_height="match_parent">

    <com.安卓.volley.toolbox.NetworkImageView
        安卓:id="@+id/VollyNetworkImageView1"
        安卓:layout_width="150dp"
        安卓:layout_height="100dp"
        安卓:src="@mipmap/ic_launcher"/>


    </LinearLayout>

共 (2) 个答案

  1. # 1 楼答案

    这是我放的代码

     class ViewHolder extends RecyclerView.ViewHolder{
    
            public TextView ImageTitleNameView;
            public TextView YearView;
            public NetworkImageView networkImageView ;
    
            public ViewHolder(View itemView) {
    
                super(itemView);
    
                ImageTitleNameView = (TextView) itemView.findViewById(R.id.textView_item) ;
    
                YearView = (TextView) itemView.findViewById(R.id.textView_item1) ;
    
                networkImageView = (NetworkImageView) itemView.findViewById(R.id.VollyNetworkImageView1) ;
    
                itemView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
    
                        Intent intent = new Intent(v.getContext(), SecondPage.class);
                        intent.putExtra("path", networkImageView);
                        startActivity(intent);
                        Toast.makeText(v.getContext(), "Image not found", Toast.LENGTH_SHORT).show();
                    }
                });
    
    
            }
    
  2. # 2 楼答案

    您可以使用意图将url传递给其他活动 就像下面的粘贴代码一样,您可以在cardview中的哪个位置单击,或者在哪个单击事件中希望转到其他活动

    Intent i = new Intent(MainActivity.this, LoginActivity.class);
        i.putExtra("url", your_image_usr);
        startActivity(i);
    

    在您的其他活动中接收图像url,这表示您的imageview活动

    Intent i =getIntent();
        String url = i.getStringExtra("url");
    

    并使用此glide library打开图像以显示图像

    在你的gradle文件中编译这个

    compile 'com.github.bumptech.glide:glide:4.0.0-RC0'
    

    像这样加载图像

      ImageView imageView = (ImageView) findViewById(R.id.my_image_view);
     GlideApp
    .with(this)
    .load(url)
    .centerCrop()
    .placeholder(R.drawable.loading_spinner)
    .into(imageView);