I'm currently have 2 errors in my adapter portion of my project I can't seem to figure out. It says cannot resolve symbol EarthquakeAsyncTask and cannot resolve method execute.(java.lang.String) in this section below:
EarthquakeAsyncTask task = new EarthquakeAsyncTask();
task.execute(USGS_REQUEST_URL);
The rest of the code for this activity is below. Let me know if you guys have any ideas or need more code from my project since I'm still new at android. So far I've tried invalidating caches and restarting.
package com.example.cs449project;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.navigation.NavController;
import androidx.navigation.Navigation;
import androidx.navigation.ui.AppBarConfiguration;
import androidx.navigation.ui.NavigationUI;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import com.example.cs449project.adapter.EarthquakeAdapter;
import com.google.android.gms.common.Feature;
import com.google.android.material.bottomnavigation.BottomNavigationView;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import java.util.ArrayList;
import java.util.HashMap;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.AdapterView;
import android.widget.ListView;
public class MainActivity extends AppCompatActivity {
private static final String USGS_REQUEST_URL =
"https://earthquake.usgs.gov/fdsnws/event/1/query?format=geojson&orderby=time&minmag=4&limit=10";
private EarthquakeAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView earthquakeListView = (ListView) findViewById(R.id.list);
mAdapter = new EarthquakeAdapter(this, new ArrayList<Earthquake>());
earthquakeListView.setAdapter(mAdapter);
earthquakeListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
Earthquake currentEarthquake = mAdapter.getItem(position);
Uri earthquakeUri = Uri.parse(currentEarthquake.getUrl());
Intent eqIntent = new Intent(Intent.ACTION_VIEW, earthquakeUri);
startActivity(eqIntent);
}
});
// Start the AsyncTask to fetch the earthquake data
EarthquakeAsyncTask task = new EarthquakeAsyncTask();
task.execute(USGS_REQUEST_URL);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater acc_inflater = getMenuInflater();
acc_inflater.inflate(R.menu.signout, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
FirebaseAuth acc_a = FirebaseAuth.getInstance();
switch(item.getItemId()){
case R.id.Sign_out:
acc_a.signOut();
startActivity(new Intent(MainActivity.this, LoginActivity.class));
finish();
break;
}
return super.onOptionsItemSelected(item);
}
}
Heres my EarthquakeAdapter.java:
package com.example.cs449project.adapter;
import android.content.Context;
import android.graphics.drawable.GradientDrawable;
import androidx.core.content.ContextCompat;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import com.example.cs449project.Earthquake;
import com.example.cs449project.R;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
public class EarthquakeAdapter extends ArrayAdapter<Earthquake> {
private static final String LOCATION_SEPARATOR = " of ";
public EarthquakeAdapter(Context context, List<Earthquake> earthquakes) {
super(context, 0, earthquakes);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View listItemView = convertView;
if (listItemView == null) {
listItemView = LayoutInflater.from(getContext()).inflate(
R.layout.earthquake_list_item, parent, false);
}
Earthquake currentEarthquake = getItem(position);
TextView magnitudeView = (TextView) listItemView.findViewById(R.id.magnitude);
String formattedMagnitude = formatMagnitude(currentEarthquake.getMagnitude());
magnitudeView.setText(formattedMagnitude);
GradientDrawable magnitudeCircle = (GradientDrawable) magnitudeView.getBackground();
int magnitudeColor = getMagnitudeColor(currentEarthquake.getMagnitude());
magnitudeCircle.setColor(magnitudeColor);
String originalLocation = currentEarthquake.getLocation();
String primaryLocation;
String locationOffset;
if (originalLocation.contains(LOCATION_SEPARATOR)) {
String[] parts = originalLocation.split(LOCATION_SEPARATOR);
locationOffset = parts[0] + LOCATION_SEPARATOR;
primaryLocation = parts[1];
} else {
locationOffset = "Near this";
primaryLocation = originalLocation;
}
TextView primaryLocationView = (TextView) listItemView.findViewById(R.id.primary_location);
locationOffsetView.setText(locationOffset);
Date dateObject = new Date(currentEarthquake.getTimeInMilliseconds());
TextView dateView = (TextView) listItemView.findViewById(R.id.date);
String formattedDate = formatDate(dateOject);
timeView.setText(formattedTime);
return listItemView;
}
private int getMagnitudeColor(double magnitude) {
int magnitudeColorResourceId;
int magnitudeFloor = (int) Math.floor(magnitude);
switch (magnitudeFloor) {
case 0:
case 1:
magnitudeColorResourceId = R.color.magnitude1;
break;
case 2:
magnitudeColorResourceId = R.color.magnitude2;
break;
case 3:
magnitudeColorResourceId = R.color.magnitude3;
break;
case 4:
magnitudeColorResourceId = R.color.magnitude4;
break;
case 5:
magnitudeColorResourceId = R.color.magnitude5;
break;
case 6:
magnitudeColorResourceId = R.color.magnitude6;
break;
case 7:
magnitudeColorResourceId = R.color.magnitude7;
break;
case 8:
magnitudeColorResourceId = R.color.magnitude8;
break;
case 9:
magnitudeColorResourceId = R.color.magnitude9;
break;
default:
magnitudeColorResourceId = R.color.magnitude10plus;
break;
}
return ContextCompat.getColor(getContext(), magnitudeColorResourceId);
}
/**
* Return the formatted magnitude string showing 1 decimal place (i.e. "3.2")
* from a decimal magnitude value.
*/
private String formatMagnitude(double magnitude) {
DecimalFormat magnitudeFormat = new DecimalFormat("0.0");
return magnitudeFormat.format(magnitude);
}
/**
* Return the formatted date string (i.e. "Mar 3, 1984") from a Date object.
*/
private String formatDate(Date dateObject) {
SimpleDateFormat dateFormat = new SimpleDateFormat("LLL dd, yyyy");
return dateFormat.format(dateObject);
}
/**
* Return the formatted date string (i.e. "4:30 PM") from a Date object.
*/
private String formatTime(Date dateObject) {
SimpleDateFormat timeFormat = new SimpleDateFormat("h:mm a");
return timeFormat.format(dateObject);
}
}