Ich habe zwei Klassen, eine Personenklasse, die eine neue Instanz einer Person erstellt, und eine Stoppuhrklasse, die eine neue Instanz einer Stoppuhr erstellt (die Variablen Button, Button, TextView) und Person).Kann keine neue Klasseninstanz für BaseAdapter erstellen
in meiner Hauptfunktion habe ich zwei Textfelder bearbeiten, eine Schaltfläche und dann eine Listenansicht. Was ich versuche zu tun, ist EditText mit Vorname und Nachname zu füllen, dann klicken Sie auf Speichern. Nach dem Speichern möchte ich diese Daten in dieser bestimmten Instanz meiner Person speichern. Verwenden Sie dann diese Person, um den Text des Buttons innerhalb der Stoppuhr-Instanz zu aktualisieren. Jeder Stoppuhrinstanz sollte eine andere Personeninstanz zugewiesen sein, so dass jede Stoppuhr einen anderen Namen hat. Momentan tut mein onclick Listener für den Speicherknopf nichts und ich weiß nicht warum. Im Moment habe ich den getCount fest programmiert, bis ich nur noch eine Person einer Stoppuhr zuordnen kann.
Sorry, wenn dies eine dumme Frage ist, ich bin neu in Java
Hauptfunktion:
import android.annotation.SuppressLint;
import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText firstName = (EditText)findViewById(R.id.FirstName);
final EditText lastName = (EditText)findViewById(R.id.LastName);
ListView listView = (ListView)findViewById(R.id.listView);
final Button save = (Button)findViewById(R.id.SaveUser);
BaseAdapter myAdapter = new BaseAdapter() {
@Override
public int getCount() {
return 1;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@SuppressLint("ViewHolder")
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.stopwatchview,parent,false);
final TextView Screen = (TextView) convertView.findViewById(R.id.Clock_View);
final Button start = (Button) convertView.findViewById(R.id.button_start);
Button reset = (Button) convertView.findViewById(R.id.button_reset);
final Person person = new Person();
final Stopwatch stopwatch = new Stopwatch(Screen,start,reset,person);;
Button save = (Button) findViewById(R.id.SaveUser);
final EditText first = (EditText) findViewById(R.id.FirstName);
final EditText last = (EditText) findViewById(R.id.LastName);
assert save != null;
save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
person.setName(first.getText().toString(), last.getText().toString());
}
});
start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (stopwatch.isTicking()) {
stopwatch.stop();
} else {
stopwatch.start();
}
}
});
reset.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
stopwatch.reset();
}
});
return convertView;
}
};
listView.setAdapter(myAdapter);
}
}
Stoppuhr Klasse:
import android.graphics.Color;
import android.os.Handler;
import android.os.SystemClock;
import android.widget.Button;
import android.widget.TextView;
public class Stopwatch {
TextView text;
Button start;
Button reset;
Person person;
public Stopwatch(TextView t, Button Start, Button Reset, Person p){
text = t;
start = Start;
reset = Reset;
person = p;
}
long starttime = 0L;
long timeInMilliseconds = 0L;
long timeSwapBuff = 0L;
long updatedtime = 0L;
int t = 1;
int secs = 0;
int mins = 0;
int milliseconds = 0;
Handler handler = new Handler();
Runnable callback;
public void start(){
callback = updateTimer();
start.setText("pause");
starttime = SystemClock.uptimeMillis();
handler.postDelayed(callback, 0);
t = 0;
}
public void stop(){
text.setTextColor(Color.BLUE);
start.setText(person.firstName);
timeSwapBuff += timeInMilliseconds;
handler.removeCallbacks(callback);
t = 1;
}
public void reset(){
stop();
starttime = 0L;
timeInMilliseconds = 0L;
timeSwapBuff = 0L;
updatedtime = 0L;
t = 1;
secs = 0;
mins = 0;
milliseconds = 0;
if(t==0){
handler.removeCallbacks(callback);
}
text.setText("00:00:00");
}
public boolean isTicking(){
if(t==0){
return true;
}
return false;
}
//Update Timer
private Runnable updateTimer() {
return new Runnable() {
public void run() {
timeInMilliseconds = SystemClock.uptimeMillis() - starttime;
updatedtime = timeSwapBuff + timeInMilliseconds;
secs = (int) (updatedtime/1000);
mins = secs/60;
secs = secs % 60;
milliseconds = (int) (updatedtime % 1000);
text.setText("" + mins + ":" + String.format("%02d", secs) + ":"
+ String.format("%03d", milliseconds));
text.setTextColor(Color.RED);
handler.postDelayed(this, 0);
}
};
};
}
Person Klasse:
public class Person {
String firstName;
String lastName;
String initials;
public Person(){
firstName = null;
lastName = null;
initials = null;
};
public void setName(String FirstName, String LastName){
firstName = FirstName;
lastName = LastName;
setInitials(FirstName, LastName);
}
private void setInitials(String firstName, String lastName) {
String firstLetter = firstName.substring(0,1);
String lastLetter = lastName.substring(0,1);
initials = firstLetter.concat(lastLetter);
}
}