RequiredSDK异常android';se.emilsjolander.stickylistheaders.StickyListHeadersListView';
这是我的java类,在这段代码中。我想使用stickylistheaderView作为我的listviewRequiredSDK异常android';se.emilsjolander.stickylistheaders.StickyListHeadersListView';,android,listview,Android,Listview,这是我的java类,在这段代码中。我想使用stickylistheaderView作为我的listview public class UsersList extends AppCompatActivity implements View.OnClickListener { LinearLayout llTab2; RelativeLayout llTab1; SeekBar sbDistance; TextView tvProgress; Utils
public class UsersList extends AppCompatActivity implements View.OnClickListener {
LinearLayout llTab2;
RelativeLayout llTab1;
SeekBar sbDistance;
TextView tvProgress;
Utils utils;
ArrayList<String> name;
StickyListHeadersListView stickyList;
Map<String, Integer> mapIndex;
private MapView myOpenMapView;
private MapController myMapController;
LocationManager locationManager;
ArrayList<OverlayItem> overlayItemArray;
DefaultResourceProxyImpl defaultResourceProxyImpl;
DatabaseHelper dbhelper;
ConnectionDetector cd;
Button main_cerca_tabler, main_tablers_vicini_a_te;
// LinearLayout edittextView;
EditText surnameEdt, tavolaEdt, cityEdt, regionEdt, professionEdt;
ArrayList<UserDetails> offlineDetails;
ArrayList<UserDetails> offlineDetailsSearch;
private ArrayList<OverlayItem> OverlayItemArray;
public Location curlocation;
public GPSTracker gpsTracker;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search_userlist);
ActionBar actinBar = getSupportActionBar();
actinBar.setDisplayHomeAsUpEnabled(true);
actinBar.setHomeAsUpIndicator(R.drawable.white_back_arrow);
actinBar.setBackgroundDrawable(new ColorDrawable(ContextCompat.getColor(UsersList.this, R.color.actionbarblue)));
main_cerca_tabler = (Button) findViewById(R.id.main_cerca_tabler);
main_tablers_vicini_a_te = (Button) findViewById(R.id.main_tablers_vicini_a_te);
// edittextView = (LinearLayout) findViewById(R.id.edittextView);
stickyList = (StickyListHeadersListView) findViewById(R.id.list);
surnameEdt = (EditText) findViewById(R.id.header_list_surname_edt);
myOpenMapView = (MapView) findViewById(R.id.openmapview);
tavolaEdt = (EditText) findViewById(R.id.header_list_tovelo_edt);
cityEdt = (EditText) findViewById(R.id.header_list_city_edt);
regionEdt = (EditText) findViewById(R.id.header_list_region_edt);
professionEdt = (EditText) findViewById(R.id.header_list_profession_edt);
llTab1 = (RelativeLayout) findViewById(R.id.llTab1_HeaderList);
llTab2 = (LinearLayout) findViewById(R.id.llTab2_HeaderList);
sbDistance = (SeekBar) findViewById(R.id.sbDistance_HEADER_LIST);
sbDistance.setProgressDrawable(ContextCompat.getDrawable(UsersList.this, R.drawable.ic_seekbar_background));
sbDistance.setMax(50);
tvProgress = (TextView) findViewById(R.id.tvProgress_HeaderList);
sbDistance.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
tvProgress.setText("" + seekBar.getProgress());
}
});
utils = new Utils(UsersList.this);
dbhelper = new DatabaseHelper(UsersList.this);
cd = new ConnectionDetector(UsersList.this);
gpsTracker = new GPSTracker(this);
myOpenMapView.setBuiltInZoomControls(true);
myOpenMapView.setMultiTouchControls(true);
myOpenMapView.setClickable(true);
myMapController = (MapController) myOpenMapView.getController();
overlayItemArray = new ArrayList<OverlayItem>();
offlineDetailsSearch = new ArrayList<UserDetails>();
if (gpsTracker.canGetLocation()) {
try {
GeoPoint geoPoint = new GeoPoint(gpsTracker.getLatitude(), gpsTracker.getLongitude());
myMapController.setCenter(geoPoint);
} catch (Exception e) {
Toast.makeText(UsersList.this, "" + e.toString(), Toast.LENGTH_SHORT).show();
}
} else {
gpsTracker.showSettingsAlert();
}
main_cerca_tabler.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
llTab2.setVisibility(View.VISIBLE);
llTab1.setVisibility(View.GONE);
main_cerca_tabler.setBackground(ContextCompat.getDrawable(UsersList.this, R.drawable.corner_yellow));
main_tablers_vicini_a_te.setBackgroundResource(0);
Drawable img = ContextCompat.getDrawable(UsersList.this, R.drawable.ic_white_user);
main_cerca_tabler.setCompoundDrawablesWithIntrinsicBounds(img, null, null, null);
Drawable img1 = ContextCompat.getDrawable(UsersList.this, R.drawable.ic_blue_location);
main_tablers_vicini_a_te.setCompoundDrawablesWithIntrinsicBounds(img1, null, null, null);
main_cerca_tabler.setTextColor(ContextCompat.getColor(UsersList.this, R.color.white));
main_tablers_vicini_a_te.setTextColor(ContextCompat.getColor(UsersList.this, R.color.blue));
}
});
main_tablers_vicini_a_te.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
llTab2.setVisibility(View.GONE);
llTab1.setVisibility(View.VISIBLE);
main_tablers_vicini_a_te.setBackground(ContextCompat.getDrawable(UsersList.this, R.drawable.corner_yellow));
main_cerca_tabler.setBackgroundResource(0);
Drawable img = ContextCompat.getDrawable(UsersList.this, R.drawable.ic_white_location);
main_tablers_vicini_a_te.setCompoundDrawablesWithIntrinsicBounds(img, null, null, null);
Drawable img1 = ContextCompat.getDrawable(UsersList.this, R.drawable.ic_blue_user);
main_cerca_tabler.setCompoundDrawablesWithIntrinsicBounds(img1, null, null, null);
main_cerca_tabler.setTextColor(ContextCompat.getColor(UsersList.this, R.color.blue));
main_tablers_vicini_a_te.setTextColor(ContextCompat.getColor(UsersList.this, R.color.white));
}
});
if (cd.isConnectingToInternet()) {
new getData().execute();
} else {
OverlayItemArray = new ArrayList<>();
setUpMap();
offlineDetails = dbhelper.getAllUser();
name = new ArrayList<String>();
for (int i = 0; i < offlineDetails.size(); i++) {
name.add(offlineDetails.get(i).getName());
OverlayItem object1 = new OverlayItem(
"", "", new GeoPoint(Double.parseDouble(offlineDetails.get(i).getLat()), Double.parseDouble(offlineDetails.get(i).getLog())));
Drawable newMarker = ContextCompat.getDrawable(UsersList.this, R.drawable.ic_marker);
object1.setMarker(newMarker);
OverlayItemArray.add(object1);
}
setUpList(name, offlineDetails);
putAllPin(OverlayItemArray);
}
}
private void searchProfession(String s) {
String surname = surnameEdt.getText().toString();
String tavola = tavolaEdt.getText().toString();
// String profession = professionEdt.getText().toString();
String city = cityEdt.getText().toString();
// String profession = professionEdt.getText().toString();
ArrayList<String> name = new ArrayList<>();
offlineDetailsSearch = new ArrayList<>();
for (int i = 0; i < offlineDetails.size(); i++) {
UserDetails details = offlineDetails.get(i);
if (details.getTavola().contains(tavola) && details.getSurname().contains(surname) && details.getCity().contains(city) && details.getProfession().contains(s)) {
offlineDetailsSearch.add(offlineDetails.get(i));
name.add(offlineDetails.get(i).getName());
}
}
setUpList(name, offlineDetailsSearch);
}
private void searchCity(String s) {
String surname = surnameEdt.getText().toString();
String tavola = tavolaEdt.getText().toString();
String profession = professionEdt.getText().toString();
// String city = cityEdt.getText().toString();
// String profession = professionEdt.getText().toString();
ArrayList<String> name = new ArrayList<>();
offlineDetailsSearch = new ArrayList<>();
for (int i = 0; i < offlineDetails.size(); i++) {
UserDetails details = offlineDetails.get(i);
if (details.getTavola().contains(tavola) && details.getSurname().contains(surname) && details.getCity().contains(s) && details.getProfession().contains(profession)) {
offlineDetailsSearch.add(offlineDetails.get(i));
name.add(offlineDetails.get(i).getName());
}
}
setUpList(name, offlineDetailsSearch);
}
private void searchTavola(String s) {
String surname = surnameEdt.getText().toString();
// String tavola = tavolaEdt.getText().toString();
String profession = professionEdt.getText().toString();
String city = cityEdt.getText().toString();
// String profession = professionEdt.getText().toString();
ArrayList<String> name = new ArrayList<>();
offlineDetailsSearch = new ArrayList<>();
for (int i = 0; i < offlineDetails.size(); i++) {
UserDetails details = offlineDetails.get(i);
if (details.getTavola().contains(s) && details.getSurname().contains(surname) && details.getCity().contains(city) && details.getProfession().contains(profession)) {
offlineDetailsSearch.add(offlineDetails.get(i));
name.add(offlineDetails.get(i).getName());
}
}
setUpList(name, offlineDetailsSearch);
}
private void searchSurname(String s) {
// String surname = surnameEdt.getText().toString();
String tavola = tavolaEdt.getText().toString();
String profession = professionEdt.getText().toString();
String city = cityEdt.getText().toString();
// String profession = professionEdt.getText().toString();
ArrayList<String> name = new ArrayList<>();
offlineDetailsSearch = new ArrayList<>();
for (int i = 0; i < offlineDetails.size(); i++) {
UserDetails details = offlineDetails.get(i);
if (details.getSurname().contains(s) && details.getTavola().contains(tavola) && details.getProfession().contains(profession) && details.getCity().contains(city)) {
offlineDetailsSearch.add(offlineDetails.get(i));
name.add(offlineDetails.get(i).getName());
}
}
setUpList(name, offlineDetailsSearch);
}
private void setUpMap() {
defaultResourceProxyImpl = new DefaultResourceProxyImpl(this);
// MyItemizedIconOverlay myItemizedIconOverlay = new MyItemizedIconOverlay(overlayItemArray, null, defaultResourceProxyImpl);
// myOpenMapView.getOverlays().add(myItemizedIconOverlay);
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
//for demo, getLastKnownLocation from GPS only, not from NETWORK
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
return;
}
Location lastLocation = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
// Location lastLocation = new Location("");
// lastLocation.setLatitude(20.30);
// lastLocation.setLongitude(52.30);
// if (lastLocation != null) {
// updateLoc(lastLocation);
// }
//Add Scale Bar
// ScaleBarOverlay myScaleBarOverlay = new ScaleBarOverlay(this);
// myOpenMapView.getOverlays().add(myScaleBarOverlay);
}
@Override
protected void onResume() {
super.onResume();
}
@Override
protected void onPause() {
super.onPause();
}
private void displayIndex() {
LinearLayout indexLayout = (LinearLayout) findViewById(R.id.side_index);
TextView textView;
List<String> indexList = new ArrayList<String>(mapIndex.keySet());
for (String index : indexList) {
textView = (TextView) getLayoutInflater().inflate(
R.layout.side_index_item, null);
textView.setText(index);
textView.setOnClickListener(this);
if (indexLayout != null) {
indexLayout.addView(textView);
}
}
}
private void getIndexList(ArrayList<String> fruits) {
mapIndex = new LinkedHashMap<String, Integer>();
for (int i = 0; i < fruits.size(); i++) {
String fruit = fruits.get(i);
String index = fruit.substring(0, 1);
if (mapIndex.get(index) == null) {
mapIndex.put(index, i);
}
}
}
@Override
public void onClick(View view) {
TextView selectedIndex = (TextView) view;
stickyList.setSelection(mapIndex.get(selectedIndex.getText()));
}
private class getData extends AsyncTask<String, String, String> {
ProgressDialog pd;
@Override
protected void onPreExecute() {
super.onPreExecute();
name = new ArrayList<String>();
OverlayItemArray = new ArrayList<>();
pd = new ProgressDialog(UsersList.this);
pd.setMessage("Loading...");
pd.setCancelable(false);
pd.show();
overlayItemArray.clear();
}
@Override
protected String doInBackground(String... params) {
return utils.getResponseofGet(Constant.BASE_URL + "api_user.php");
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
pd.dismiss();
JSONObject issueObj = null;
setUpMap();
offlineDetails = new ArrayList<UserDetails>();
try {
issueObj = new JSONObject(s);
Iterator<String> iterator = issueObj.keys();
while (iterator.hasNext()) {
String key = iterator.next();
JSONArray mainArray = issueObj.getJSONArray(key);
for (int i = 0; i < mainArray.length(); i++) {
JSONObject object = mainArray.getJSONObject(i);
String id, social_class, areaid, zoneid,
clubid, nationalID, surname,
dob, tavola, city, profession, province,
tel_phone, name_wife, photo, inc_area,
Postal_Code, homephone, mobilephone, workphone, fax,
address_home, email, password, occupation, fb, lat, log,
twitter, linkedin, googleplus,
deviceid, status;
String Name = object.getString("name").substring(0, 1).toUpperCase() + object.getString("name").substring(1);
name.add(Name);
// Double latitude = Double.parseDouble(object.getString("lat"));
// Double longitude = Double.parseDouble(object.getString("log"));
//
// UserDetails details = new UserDetails();
// details.setName(Name);
// details.setId(object.getString("id"));
// details.setSurname(object.getString("surname"));
// details.setTavola(object.getString("tavola"));
// details.setCity(object.getString("city"));
// details.setProfession(object.getString("profession"));
photo = "http://www.roundtable.it/uploads/tx_annuario/" + object.getString("photo").toString();
social_class = object.getString("social_class").toString();
lat = object.getString("lat").toString();
log = object.getString("log").toString();
Double latitude = Double.parseDouble(object.getString("lat"));
Double longitude = Double.parseDouble(object.getString("log"));
UserDetails details = new UserDetails();
details.setName(Name);
details.setId(object.getString("id"));
details.setFb(fb);
details.setLat(lat);
details.setLog(log);
details.setTwitter(twitter);
details.setLinkedin(linkedin);
details.setGoogleplus(googleplus);
details.setDeviceid(deviceid);
details.setStatus(status);
offlineDetails.add(details);
if (latitude != 0.0) {
Location location = new Location("List");
Log.e("location", "" + location);
location.setLatitude(latitude);
location.setLongitude(longitude);
// float distance = location.distanceTo(curlocation);
// setOverlayLoc(location);
// GeoPoint startPoint = new GeoPoint(latitude, longitude);
// myMapController.setCenter(startPoint);
OverlayItem object1 = new OverlayItem(
"", "", new GeoPoint(latitude, longitude));
Drawable newMarker = ContextCompat.getDrawable(UsersList.this, R.drawable.ic_marker);
object1.setMarker(newMarker);
OverlayItemArray.add(object1);
}
}
}
} catch (JSONException e) {
e.printStackTrace();
}
putAllPin(OverlayItemArray);
dbhelper.insertUserList(offlineDetails);
setUpList(name, offlineDetails);
}
}
public void putAllPin(ArrayList<OverlayItem> array) {
myOpenMapView.getOverlays().clear();
ItemizedIconOverlay<OverlayItem> anotherItemizedIconOverlay = new ItemizedIconOverlay<OverlayItem>(
UsersList.this, array, null);
myOpenMapView.getOverlays().add(anotherItemizedIconOverlay);
ScaleBarOverlay myScaleBarOverlay = new ScaleBarOverlay(UsersList.this);
myOpenMapView.getOverlays().add(myScaleBarOverlay);
}
public class SortBasedOnName implements Comparator {
public int compare(Object o1, Object o2) {
String dd1 = (String) o1;// where FBFriends_Obj is your object class
String dd2 = (String) o2;
return dd1.compareToIgnoreCase(dd2);//where uname is field name
}
}
public void setUpList(ArrayList<String> name, ArrayList<UserDetails> arrayUserDetails) {
Collections.sort(name, new SortBasedOnName());
Collections.sort(arrayUserDetails, new Comparator<UserDetails>() {
@Override
public int compare(UserDetails lhs, UserDetails rhs) {
return lhs.getName().compareToIgnoreCase(rhs.getName());
}
});
MyAdapter adapter = new MyAdapter(UsersList.this, arrayUserDetails);
stickyList.setAdapter(adapter);
stickyList.setOnTouchListener(new View.OnTouchListener() {
// Setting on Touch Listener for handling the touch inside ScrollView
@Override
public boolean onTouch(View v, MotionEvent event) {
// Disallow the touch request for parent scroll on touch of child view
v.getParent().requestDisallowInterceptTouchEvent(true);
return false;
}
});
// setListViewHeightBasedOnChildren(stickyList);
getIndexList(name);
displayIndex();
}
}
所以请帮助我。。。我不明白到底是什么问题。。提前感谢。通过
MultiDexApplication
public class MyApplication extends MultiDexApplication{
}
并像这样将其添加到您的清单中
<application
android:name=".MyApplication"
.............
....
通过MultiDexApplication
public class MyApplication extends MultiDexApplication{
}
并像这样将其添加到您的清单中
<application
android:name=".MyApplication"
.............
....
您的gradle文件中声明的sdk api的最低版本是什么?最低api级别是19。。但我还是遇到了同样的问题。请发布你的gradle文件。请我添加了我的gradle。谢谢你的帮助。@sripadrajGradle文件中声明的sdk api最低版本是什么?最低api级别是19。。我还是收到了同样的问题。请发布你的gradle文件。请我添加了我的gradle。谢谢你的帮助。@SripadRaj