【发布时间】:2021-11-10 11:06:34
【问题描述】:
代码正在运行,但从 postgresql 服务器检索仅 1 个视频的数据需要 14-16 秒。我认为可能有一种适当的方法来检索数据。请帮我解决一下这个。 谢谢。
FreeClassesAdapter.java
import android.app.Activity;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.android.volley.RequestQueue;
import com.athrved.masterclass.PlayerActivity;
import com.athrved.masterclass.R;
import com.squareup.picasso.Picasso;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
public class FreeclassesAdapter extends RecyclerView.Adapter<FreeclassesAdapter.FreeViewHolder> {
ArrayList<FreeHelperClass> featloc;
public static String a,b="FAILED TO LOAD";
public static String videoId1;
RequestQueue requestQueue;
private static String V_id1;
public FreeclassesAdapter(ArrayList<FreeHelperClass> featloc) {
this.featloc = featloc;
}
@NonNull
@Override
public FreeViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.free_class_card_design,parent,false);
FreeViewHolder freeViewHolder = new FreeViewHolder(view);
return freeViewHolder;
}
@Override
public void onBindViewHolder(@NonNull FreeViewHolder holder, int position) {
FreeHelperClass freeHelperClass = featloc.get(position);
holder.imagesmall1.setImageResource(freeHelperClass.getImagesmall1());
holder.imagesmall2.setImageResource(freeHelperClass.getImagesmall2());
holder.title.setText(freeHelperClass.getTitle());
holder.topic.setText(freeHelperClass.getTopic());
holder.author.setText(freeHelperClass.getAuthor());
Database db=new Database();
videoId1=V_id1;
if(position==0){
Picasso.get().load("https://img.youtube.com/vi/"+videoId1+"/maxresdefault.jpg").into(holder.imagebig);
}
if(position==1){
Picasso.get().load("https://img.youtube.com/vi/lrcqt4RelJ4/maxresdefault.jpg").into(holder.imagebig);
}
}
@Override
public int getItemCount() {
return featloc.size();
}
public static class FreeViewHolder extends RecyclerView.ViewHolder{
ImageView imagebig, imagesmall1,imagesmall2;
TextView topic, author;
TextView title;
Button bookmark, bookmark_border;
public FreeViewHolder(@NonNull final View itemView){
super(itemView);
imagebig=itemView.findViewById(R.id.freeimgbig);
imagesmall1=itemView.findViewById(R.id.freec1_image);
imagesmall2=itemView.findViewById(R.id.freec2_image);
bookmark=itemView.findViewById(R.id.bookmarkfree);
bookmark_border=itemView.findViewById(R.id.bookmarkfree_border);
title=itemView.findViewById(R.id.freec_title);
topic=itemView.findViewById(R.id.freec_topic);
author=itemView.findViewById(R.id.freec_author);
bookmark_border.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(getAdapterPosition()==0){
bookmark_border.setVisibility(View.GONE);
bookmark.setVisibility(View.VISIBLE);
}
if(getAdapterPosition()==1){
bookmark_border.setVisibility(View.GONE);
bookmark.setVisibility(View.VISIBLE);
}
}
});
bookmark.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(getAdapterPosition()==0){
bookmark_border.setVisibility(View.VISIBLE);
bookmark.setVisibility(View.GONE);
}
if(getAdapterPosition()==1){
bookmark_border.setVisibility(View.VISIBLE);
bookmark.setVisibility(View.GONE);
}
}
});
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
videoId1=V_id1;
if (getAdapterPosition() == 0) {
Intent intent = new Intent(itemView.getContext(), PlayerActivity.class);
intent.putExtra("VIDEOID", videoId1);
itemView.getContext().startActivity(intent);
Activity activity = (Activity) itemView.getContext();
activity.overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
}
if (getAdapterPosition() == 1) {
Intent intent = new Intent(itemView.getContext(), PlayerActivity.class);
intent.putExtra("VIDEOID", "lrcqt4RelJ4");
itemView.getContext().startActivity(intent);
Activity activity = (Activity) itemView.getContext();
activity.overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
}
}
});
}
}
private class Database {
private Connection connection;
private final String host = "ec2-54-158-232-223.compute-1.amazonaws.com";
private final String database = "ddgaguv61p4m63";
private final int port = 5432;
private final String user = "jfeitasqnyuanh";
private final String pass = "d60b43b4e9ea924c91deb754cf18a51d5948b7a7e58b4e4d0045487767174ad8";
private String url = "jdbc:postgresql://ec2-54-158-232-223.compute-1.amazonaws.com:5432/ddgaguv61p4m63?sslmode=require&user=jfeitasqnyuanh&password=d60b43b4e9ea924c91deb754cf18a51d5948b7a7e58b4e4d0045487767174ad8";
private boolean status;
public Database() {
this.url = String.format(this.url, this.host, this.port, this.database);
connect();
//this.disconnect();
System.out.println("connection status:" + status);
}
private void connect() {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
Class.forName("org.postgresql.Driver");
connection = DriverManager.getConnection(url, user, pass);
status = true;
getExtraConnection();
System.out.println("connected:" + status);
} catch (Exception e) {
status = false;
System.out.print(e.getMessage());
e.printStackTrace();
}
}
});
thread.start();
try {
thread.join();
} catch (Exception e) {
e.printStackTrace();
this.status = false;
}
}
public Connection getExtraConnection() {
Connection c = null;
Statement stmt = null;
try {
Class.forName("org.postgresql.Driver");
c = DriverManager.getConnection(url, user, pass);
c.setAutoCommit(false);
System.out.println("Opened database successfully");
stmt = c.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM videos WHERE access_count=1;");
while (rs.next()) {
V_id1 = rs.getString("video_id");
//
// System.out.println("NAME = " + Name);
// System.out.println("BIO = " + Bio);
// System.out.println("PHONE = " + Phone);
System.out.println();
}
rs.close();
stmt.close();
c.close();
} catch (Exception e) {
System.err.println(e.getClass().getName() + ": " + e.getMessage());
System.exit(0);
}
System.out.println("Records created successfully");
return c;
}
}
}
来自使用 FreeClassesAdapter 的主要活动的代码 - UiUxActivity.java:
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.MenuItem;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.athrved.masterclass.FetchData;
import com.athrved.masterclass.R;
import java.util.ArrayList;
import java.util.List;
public class UiuxActivity extends AppCompatActivity {
TextView abcde;
TextView ak;
String tit;
String urlname,videoID,tita;
RecyclerView dataList2;
List<String> titles2;
List<Integer> images2;
ImgAdapter2 imgAdapter2;
RecyclerView popRecycler;
RecyclerView.Adapter adapter1;
RecyclerView freeRecycler;
RecyclerView.Adapter adapter2;
RecyclerView menRecycler;
RecyclerView.Adapter adapter3;
RecyclerView allFewRecycler;
RecyclerView.Adapter adapter4;
ArrayList<UiuxAllClasses> allCourseList=new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_uiux);
getSupportActionBar().setTitle("UI UX Design");
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.greyy)));
// videoID="_vAmKNin0QM";
// urlname="https://noembed.com/embed?url=https://www.youtube.com/watch?v="+videoID;
// tita= respo(urlname);
popRecycler = findViewById(R.id.r1popclass);
featuredRecycler();
freeRecycler=findViewById(R.id.r1freeclass);
freeturedRecycler( tit);
menRecycler=findViewById(R.id.r3menclass);
mentoredRecycler();
allFewRecycler=findViewById(R.id.r4fewalllist);
allfewRecycler();
dataList2 = findViewById(R.id.dataList2);
abcde = findViewById(R.id.tvv1);
ak=findViewById(R.id.ak);
titles2 = new ArrayList<>();
images2 = new ArrayList<>();
titles2.add("Visual Design");
titles2.add("UX Design");
titles2.add("Motion Design");
titles2.add("Prototyping");
titles2.add("3D Design");
titles2.add("Webflow");
images2.add(R.drawable.visuald_logo);
images2.add(R.drawable.uiux_logo);
images2.add(R.drawable.motiond_logo);
images2.add(R.drawable.mach_logo);
images2.add(R.drawable.threed_logo);
images2.add(R.drawable.iot_logo);
imgAdapter2 = new ImgAdapter2(this,titles2,images2);
GridLayoutManager gridLayoutManager = new GridLayoutManager(this,2,GridLayoutManager.VERTICAL,false);
dataList2.setLayoutManager(gridLayoutManager);
dataList2.setAdapter(imgAdapter2);
}
private void featuredRecycler(){
FetchData fetchData = new FetchData();
fetchData.execute();
popRecycler.setHasFixedSize(true);
popRecycler.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
ArrayList<PopHelperClass> popLocatio = new ArrayList<>();
popLocatio.add(new PopHelperClass(R.drawable.secndone, R.drawable.ai_logo,0,"Color and Color Theory -\nFundamentals of Visual Design","VISUAL DESIGN","Goutham Naik","Um3BhY0oS2c"));
popLocatio.add(new PopHelperClass(R.drawable.firstone, R.drawable.ai_logo, R.drawable.motiond_logo,"Color and Color Theory -\nFundamentals of Visual Design","UX DESIGN"," Goutham Naik, S. M. Sudhanva Acharya","_vAmKNin0QM"));
adapter1=new PopclassesAdapter(popLocatio);
popRecycler.setAdapter(adapter1);
}
private void freeturedRecycler(String tita){
freeRecycler.setHasFixedSize(true);
freeRecycler.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
ArrayList<FreeHelperClass> freeLocatio = new ArrayList<>();
freeLocatio.add(new FreeHelperClass(R.drawable.ai_logo,0,"Top UX Design Interview Questions","VISUAL DESIGN","S M Sudhanva Acharya"));
freeLocatio.add(new FreeHelperClass(R.drawable.ai_logo,0,"White Space in Design","VISUAL DESIGN","Abhinav Chikkara"));
adapter2=new FreeclassesAdapter(freeLocatio);
freeRecycler.setAdapter(adapter2);
}
private void mentoredRecycler(){
menRecycler.setHasFixedSize(true);
menRecycler.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
ArrayList<MenHelperClass> menLocatio = new ArrayList<>();
menLocatio.add(new MenHelperClass(R.drawable.oneman,"Goutam Naik","CEO, AthrV-Ed"));
menLocatio.add(new MenHelperClass(R.drawable.twoman,"S M Sudhanva Acharya", "Product Designer, AthrV-Ed"));
menLocatio.add(new MenHelperClass(R.drawable.threeman,"Abhinav Chikkara", "Founder, 10kilogram"));
adapter2=new MenAdapter(menLocatio);
menRecycler.setAdapter(adapter2);
}
private void allfewRecycler(){
allFewRecycler.setHasFixedSize(true);
allFewRecycler.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
ArrayList<FewAllHelperClass> fewAllLocatio = new ArrayList<>();
fewAllLocatio.add(new FewAllHelperClass(R.drawable.webflow_l, R.drawable.ai_logo,"Playing with Grid-\nWeb Design Fundamentals","WEBFLOW","Goutham Naik"));
fewAllLocatio.add(new FewAllHelperClass(R.drawable.protopie_l, R.drawable.ai_logo,"Protopie for Prototyping","PROTOTYPING\n","Abhinav Chikkara"));
fewAllLocatio.add(new FewAllHelperClass(R.drawable.afepluslot_l, R.drawable.ai_logo,"Introduction to After Effects\nand Lottie Files","MOTION DESIGN","S.M Sudhanva Acharya"));
adapter4=new FewAllAdapter(fewAllLocatio);
allFewRecycler.setAdapter(adapter4);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}
}
【问题讨论】:
-
请修剪您的代码,以便更容易找到您的问题。请按照以下指南创建minimal reproducible example。
标签: java android sql postgresql android-recyclerview