У меня есть настройки RecylerView и базы данных. Они оба работают правильно, база данных подключена к приложению с помощью BackgroundWorker. java. Но я пытаюсь заставить RecyclerView отображать текст и изображения из базы данных MySQl.
Из этих примеров базы данных 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);
}
}
}