Ich habe ein kleines Problem mit meinem Lernen von Android-Programmierung. Ich suche bereits Google nach Lösungen, aber ich kann es nicht finden, ich brauche Ihre Hilfe bitte.So speichern Sie EditText-Daten in der neuen ListView-Aktivität
Ich folgte einem Tutorial für die Verwendung grundlegende CRUD-Operation mit MySQL-Datenbank. Hier
ist der Quellcode:
package net.simplifiedlearning.myheroapp;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.RatingBar;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import static android.view.View.GONE;
public class MainActivity extends AppCompatActivity {
private static final int CODE_GET_REQUEST = 1024;
private static final int CODE_POST_REQUEST = 1025;
EditText editTextHeroId, editTextNom, editTextprenom;
RatingBar ratingBar;
Spinner spinnerTeam;
ProgressBar progressBar;
ListView listView;
Button buttonAddUpdate;
List<Hero> heroList;
boolean isUpdating = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editTextHeroId = (EditText) findViewById(R.id.editTextHeroId);
editTextNom = (EditText) findViewById(R.id.editTextNom);
editTextprenom = (EditText) findViewById(R.id.editTextPrenom);
ratingBar = (RatingBar) findViewById(R.id.ratingBar);
spinnerTeam = (Spinner) findViewById(R.id.spinnerTeamAffiliation);
buttonAddUpdate = (Button) findViewById(R.id.buttonAddUpdate);
progressBar = (ProgressBar) findViewById(R.id.progressBar);
listView = (ListView) findViewById(R.id.listViewHeroes);
heroList = new ArrayList<>();
buttonAddUpdate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (isUpdating) {
updateHero();
} else {
createHero();
}
}
});
readHeroes();
}
private void createHero() {
String nom = editTextNom.getText().toString().trim();
String prenom = editTextprenom.getText().toString().trim();
int rating = (int) ratingBar.getRating();
String team = spinnerTeam.getSelectedItem().toString();
if (TextUtils.isEmpty(nom)) {
editTextNom.setError("Please enter name");
editTextNom.requestFocus();
return;
}
if (TextUtils.isEmpty(prenom)) {
editTextprenom.setError("Please enter real name");
editTextprenom.requestFocus();
return;
}
HashMap<String, String> params = new HashMap<>();
params.put("nom", nom);
params.put("prenom", prenom);
params.put("rating", String.valueOf(rating));
params.put("teamaffiliation", team);
PerformNetworkRequest request = new PerformNetworkRequest(Api.URL_CREATE_HERO, params, CODE_POST_REQUEST);
request.execute();
}
private void readHeroes() {
PerformNetworkRequest request = new PerformNetworkRequest(Api.URL_READ_HEROES, null, CODE_GET_REQUEST);
request.execute();
}
private void updateHero() {
String id = editTextHeroId.getText().toString();
String nom = editTextNom.getText().toString().trim();
String prenom = editTextprenom.getText().toString().trim();
int rating = (int) ratingBar.getRating();
String team = spinnerTeam.getSelectedItem().toString();
if (TextUtils.isEmpty(nom)) {
editTextNom.setError("Please enter name");
editTextNom.requestFocus();
return;
}
if (TextUtils.isEmpty(prenom)) {
editTextprenom.setError("Please enter real name");
editTextprenom.requestFocus();
return;
}
HashMap<String, String> params = new HashMap<>();
params.put("id", id);
params.put("nom", nom);
params.put("prenom", prenom);
params.put("rating", String.valueOf(rating));
params.put("teamaffiliation", team);
PerformNetworkRequest request = new PerformNetworkRequest(Api.URL_UPDATE_HERO, params, CODE_POST_REQUEST);
request.execute();
buttonAddUpdate.setText("Add");
editTextNom.setText("");
editTextprenom.setText("");
ratingBar.setRating(0);
spinnerTeam.setSelection(0);
isUpdating = false;
}
private void deleteHero(int id) {
PerformNetworkRequest request = new PerformNetworkRequest(Api.URL_DELETE_HERO + id, null, CODE_GET_REQUEST);
request.execute();
}
private void refreshHeroList(JSONArray heroes) throws JSONException {
heroList.clear();
for (int i = 0; i < heroes.length(); i++) {
JSONObject obj = heroes.getJSONObject(i);
heroList.add(new Hero(
obj.getInt("id"),
obj.getString("nom"),
obj.getString("prenom"),
obj.getInt("rating"),
obj.getString("teamaffiliation")
));
}
HeroAdapter adapter = new HeroAdapter(heroList);
listView.setAdapter(adapter);
}
private class PerformNetworkRequest extends AsyncTask<Void, Void, String> {
String url;
HashMap<String, String> params;
int requestCode;
PerformNetworkRequest(String url, HashMap<String, String> params, int requestCode) {
this.url = url;
this.params = params;
this.requestCode = requestCode;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
progressBar.setVisibility(View.VISIBLE);
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
progressBar.setVisibility(GONE);
try {
JSONObject object = new JSONObject(s);
if (!object.getBoolean("error")) {
Toast.makeText(getApplicationContext(), object.getString("message"), Toast.LENGTH_SHORT).show();
refreshHeroList(object.getJSONArray("heroes"));
}
} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
protected String doInBackground(Void... voids) {
RequestHandler requestHandler = new RequestHandler();
if (requestCode == CODE_POST_REQUEST)
return requestHandler.sendPostRequest(url, params);
if (requestCode == CODE_GET_REQUEST)
return requestHandler.sendGetRequest(url);
return null;
}
}
class HeroAdapter extends ArrayAdapter<Hero> {
List<Hero> heroList;
public HeroAdapter(List<Hero> heroList) {
super(MainActivity.this, R.layout.layout_hero_list, heroList);
this.heroList = heroList;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = getLayoutInflater();
View listViewItem = inflater.inflate(R.layout.layout_hero_list, null, true);
TextView textViewName = listViewItem.findViewById(R.id.textViewName);
TextView textViewUpdate = listViewItem.findViewById(R.id.textViewUpdate);
TextView textViewDelete = listViewItem.findViewById(R.id.textViewDelete);
final Hero hero = heroList.get(position);
textViewName.setText(hero.getNom());
textViewUpdate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
isUpdating = true;
editTextHeroId.setText(String.valueOf(hero.getId()));
editTextNom.setText(hero.getNom());
editTextprenom.setText(hero.getPrenom());
ratingBar.setRating(hero.getRating());
spinnerTeam.setSelection(((ArrayAdapter<String>) spinnerTeam.getAdapter()).getPosition(hero.getTeamaffiliation()));
buttonAddUpdate.setText("Update");
}
});
textViewDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("Delete " + hero.getNom())
.setMessage("Are you sure you want to delete it?")
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
deleteHero(hero.getId());
}
})
.setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
})
.setIcon(android.R.drawable.ic_dialog_alert)
.show();
}
});
return listViewItem;
}
}
}
ich ein gleiches Ergebnis erhalten mag, aber ich mag ein Listview in einer anderen Aktivität erhalten. Wie bitte?
Was genau willst du? Eingabedaten in EditText der Aktivität (A), dann Ergebnis in ListView der Aktivität (B) anzeigen? – nhoxbypass
ja das ist das !!! –
Haben Sie eine neue Aktivität erstellt, um den ListView noch anzuzeigen? Bitte geben Sie es an – nhoxbypass