gpt4 book ai didi

java导入错误 "the type android.widget.Filter.FilterResults is not visible"

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:01:38 27 4
gpt4 key购买 nike

这个问题已经被问过:the type android.widget.Filter.FilterResults is not visible但是没有明确的答案,现在我遇到了同样的问题。在那次讨论中,提到了一些关于变量被标记为 final 的东西,而它们不应该用于 getFilter ......好吧,这是我的代码:

package com.example.project;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Locale;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.v4.app.NavUtils;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.DisplayMetrics;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Filter;
import android.widget.Filter.FilterResults;
import android.widget.Filterable;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class PlacesMain extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
String localePref = sharedPref.getString("pref_locale", "");
Configuration conf = getResources().getConfiguration();
conf.locale = new Locale(localePref);
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
Resources resources = new Resources(getAssets(), metrics, conf);

setContentView(R.layout.activity_places_main);

final ListView listview = (ListView) findViewById(R.id.listView1);

final EditText edittext = (EditText) findViewById(R.id.editText1);

String[] galilee = getResources().getStringArray(R.array.galilee_places);
String[] judea = getResources().getStringArray(R.array.judea_places);

String[] galilee_en = new String[galilee.length];
String[] judea_en = new String[judea.length];

if(localePref != "en"){
Locale current = conf.locale;
conf.locale = new Locale("en");
metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
Resources resources_en = new Resources(getAssets(), metrics, conf);
galilee_en = resources_en.getStringArray(R.array.galilee_places);
judea_en = resources_en.getStringArray(R.array.judea_places);
conf.locale = current;
getWindowManager().getDefaultDisplay().getMetrics(metrics);
resources = new Resources(getAssets(), metrics, conf);
}
else{
galilee_en = galilee;
judea_en = judea;
}

final ArrayList<Item> galileeArrayList = new ArrayList<Item>();
final ArrayList<Item> judeaArrayList = new ArrayList<Item>();
final ArrayList<Item> allArrayList = new ArrayList<Item>();

for (int i = 0; i < galilee.length; ++i)
{
galileeArrayList.add(new Item(galilee[i],galilee_en[i],i));
allArrayList.add(new Item(galilee[i],galilee_en[i],i));
}
for (int i = 0; i < judea.length; ++i)
{
judeaArrayList.add(new Item(judea[i],judea_en[i],i));
allArrayList.add(new Item(judea[i],judea_en[i],i));
}
Collections.sort(galileeArrayList,new Comparator<Item>(){
public int compare(Item o1, Item o2){
return o1.getPlace().compareTo(o2.getPlace());
}
});
Collections.sort(judeaArrayList,new Comparator<Item>(){
public int compare(Item o1, Item o2){
return o1.getPlace().compareTo(o2.getPlace());
}
});
Collections.sort(allArrayList,new Comparator<Item>(){
public int compare(Item o1, Item o2){
return o1.getPlace().compareTo(o2.getPlace());
}
});

final ItemAdapter all_adapter = new ItemAdapter(this, android.R.layout.simple_list_item_1,allArrayList);
final ItemAdapter galilee_adapter = new ItemAdapter(this, android.R.layout.simple_list_item_1,galileeArrayList);
final ItemAdapter judea_adapter = new ItemAdapter(this, android.R.layout.simple_list_item_1,judeaArrayList);

listview.setTextFilterEnabled(true);
listview.setAdapter(all_adapter);

edittext.addTextChangedListener(new TextWatcher(){
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {

// TODO Auto-generated method stub
String mytext = edittext.getText().toString();
all_adapter.getFilter().filter(s);
}

@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {

// TODO Auto-generated method stub
}

@Override
public void afterTextChanged(Editable s) {

// TODO Auto-generated method stub
}
});
}



private class ItemAdapter extends ArrayAdapter<Item> implements Filterable {
private final Object mLock = new Object();
private ItemsFilter mFilter;
private ArrayList<Item> mItems;

public ItemAdapter(Context context, int textViewResourceId, ArrayList<Item> mItems) {
super(context, textViewResourceId, mItems);
this.mItems = mItems;
}

@Override
public View getView (int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
Item i = mItems.get(position);
if(i != null){
TextView text1 = (TextView) view.findViewById(android.R.id.text1);
text1.setText(i.getPlace());
view.setTag(i.getPlaceEn());
}
return view;
}

public Filter getFilter(){
if (mFilter == null){
mFilter = new ItemsFilter();
}
return mFilter;
}

private class ItemsFilter extends Filter {
protected FilterResults performFiltering(CharSequence prefix) {
//Initiate our results object
FilterResults results = new FilterResults();
// If the adapter array is empty, check the actual items array and use it
if (mItems == null) {
synchronized (mLock) { // Notice the declaration above
mItems = new ArrayList<Item>();
}
}
// If no prefix is sent to the filter we'll send back the original array
if(prefix == null || prefix.length() == 0){
synchronized (mLock) {
results.values = mItems;
results.count = mItems.size();
}
}
else{
// compare lower case strings
String prefixString = prefix.toString().toLowerCase();
ArrayList<Item> items = mItems;
final int count = items.size();
final ArrayList<Item> newItems = new ArrayList<Item>(count);
for (int i = 0; i < count; i++){
final Item item = items.get(i);
final String itemPlace = item.getPlace().toLowerCase();
// First match against the whole, non splitted value
if (itemPlace.startsWith(prefixString)){
// TODO this index won't be correct, need separate index from loop increment
newItems.add(new Item(item.getPlace(),item.getPlaceEn(),i));
}
else{

}
}
// Set and return
results.values = newItems;
results.count = newItems.size();
}
return results;
}

@SuppressWarnings("unchecked")
protected void publishResults(CharSequence prefix, FilterResults results){
//noinspection unchecked
mItems = (ArrayList<Item>) results.values;
// Let the adapter know about the updated list
if(results.count > 0){
notifyDataSetChanged();
}
else{
notifyDataSetInvalidated();
}
}
}
}

}

这是代码的主要部分,我删掉了对这个问题不太感兴趣的其他部分(按钮及其触摸监听器)。除了 android.widget.Filter.FilterResults 的导入外,我没有任何错误;我曾尝试从适配器中删除“最终”,但这给了我错误,说它们必须是最终的。我试过从 ArrayLists 中去掉“final”,但这并没有改变任何东西,导入中仍然有错误“android.widget.Filter.FilterResults 类型不可见”。这还有什么问题?

我正在使用我自己的自定义 Item 类:

public class Item {
private String place;
private String placeEn;
private int id;

public Item(String place, String placeEn, int id) {
this.place = place;
this.placeEn = placeEn;
this.id = id;
}
public String getPlace() {
return place;
}
public String getPlaceEn() {
return placeEn;
}
public int getId(){
return id;
}
public void setPlace(String place){
this.place = place;
}
public void setPlaceEn(String placeEn){
this.placeEn = placeEn;
}
public void setId(int id){
this.id = id;
}
}

而且我不能在其他帖子上询问解决方案是什么,因为我在这里还没有足够的“声誉”来发表评论,呃。

最佳答案

根据我之前对原始问题的评论,回到这里将其标记为已回答:

Eclipse 会自动添加不需要的“import android.widget.Filter.FilterResults;”在“导入 android.widget.Filter”之后。有“import android.widget.Filter”就足够了,所以只需注释掉或删除 Filter.FilterResults 的第二个导入。一旦我这样做了,就没有更多的错误,并且一切都按预期工作。

关于java导入错误 "the type android.widget.Filter.FilterResults is not visible",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21814681/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com