Как мне заполнить этот RecyclerView, используя базу данных MySQL? - PullRequest
0 голосов
/ 29 января 2020

У меня есть настройки RecylerView и базы данных. Они оба работают правильно, база данных подключена к приложению с помощью BackgroundWorker. java. Но я пытаюсь заставить RecyclerView отображать текст и изображения из базы данных MySQl.

Here's an example of the MySQL database

Here's an example of what the RecyclerView is displaying on the application

Из этих примеров базы данных MySQL и обзора переработчика, я надеюсь, вы увидите, что я пытаюсь сделать.

Вот код, который у меня есть для BackgroundWorker. java

public class BackgroundWorker extends AsyncTask<String, Void, String> {
    Context context;
    AlertDialog alertDialog;

    BackgroundWorker(Context ctx) {
        context = ctx;
    }

    @Override
    protected String doInBackground(String... params) {
        String type = params[0];
        String login_url = "http://10.241.225.173/login.php";
        if (type.equals("login")) {
            try {
                String user_name = params[1];
                String password = params[2];
                URL url = new URL(login_url);
                HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
                httpURLConnection.setRequestMethod("POST");
                httpURLConnection.setDoOutput(true);
                httpURLConnection.setDoInput(true);
                OutputStream outputStream = httpURLConnection.getOutputStream();
                BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8"));
                String post_data = URLEncoder.encode("user_name", "UTF-8") + "=" + URLEncoder.encode(user_name, "UTF-8") + "&"
                        + URLEncoder.encode("password", "UTF-8") + "=" + URLEncoder.encode(password, "UTF-8");
                bufferedWriter.write(post_data);
                bufferedWriter.flush();
                bufferedWriter.close();
                outputStream.close();
                InputStream inputStream = httpURLConnection.getInputStream();
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream, "iso-8859-1"));
                String result = "";
                String line = "";
                while ((line = bufferedReader.readLine()) != null) {
                    result += line;
                }
                bufferedReader.close();
                inputStream.close();
                httpURLConnection.disconnect();
                return result;
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }

    @Override
    protected void onPreExecute() {
        alertDialog = new AlertDialog.Builder(context).create();
        alertDialog.setTitle("Login Status");
    }

    @Override
    protected void onPostExecute(String result) {
        alertDialog.setMessage(result);
        alertDialog.show();
    }

    @Override
    protected void onProgressUpdate(Void... values) {
        super.onProgressUpdate(values);
    }
}

Вот мой код, который связывает данные с аспектами recylerview в MembersFragment. java

public class MembersFragment extends Fragment {

    View v;
    private RecyclerView myrecyclerview;
    private List<Members> lstMembers;


    public MembersFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        v = inflater.inflate(R.layout.fragment_members, container, false);
        myrecyclerview = (RecyclerView) v.findViewById(R.id.members_recyclerView);
        RecyclerViewAdapter recyclerAdapter = new RecyclerViewAdapter(getContext(),lstMembers);
        myrecyclerview.setLayoutManager(new LinearLayoutManager(getActivity()));
        myrecyclerview.setAdapter(recyclerAdapter);
        return v;
    }

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

        lstMembers = new ArrayList<>();
        lstMembers.add(new Members("Brendan Griffin", "Fine Gael", "Kerry", R.drawable.members_brendangriffin_fg, R.drawable.constituency_kerry));
        lstMembers.add(new Members("John Brassil", "Fianna Fáil", "Kerry", R.drawable.members_johnbrassil_ff, R.drawable.constituency_kerry));
    }
}

и RecyclerViewAdapter. java

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.MyViewHolder> {

    Context mContext;
    List<Members> mData;

    public RecyclerViewAdapter(Context mContext, List<Members> mData) {
        this.mContext = mContext;
        this.mData = mData;
    }

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

        View v;
        v = LayoutInflater.from(mContext).inflate(R.layout.item_members, parent, false);
        MyViewHolder vHolder = new MyViewHolder(v);

        return vHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {

        holder.tv_name.setText(mData.get(position).getName());
        holder.tv_party.setText(mData.get(position).getParty());
        holder.tv_constituency.setText(mData.get(position).getConstituency());
        holder.img.setImageResource(mData.get(position).getPhoto());
        holder.imgConstituency.setImageResource((mData.get(position).getPhotoConstituency()));



    }

    @Override
    public int getItemCount() {
        return mData.size();
    }

    public static class MyViewHolder extends RecyclerView.ViewHolder {

        private TextView tv_name;
        private TextView tv_party;
        private TextView tv_constituency;
        private ImageView img;
        private ImageView imgConstituency;



        public MyViewHolder(@NonNull View itemView) {
            super(itemView);


            tv_name = (TextView) itemView.findViewById(R.id.name_members);
            tv_party = (TextView) itemView.findViewById(R.id.party_members);
            tv_constituency = (TextView) itemView.findViewById(R.id.constituency_members);
            img = (ImageView) itemView.findViewById(R.id.img_members);
            imgConstituency = (ImageView) itemView.findViewById(R.id.img_constituency);
        }
    }
}
...