gpt4 book ai didi

android - android中adapter的filter类添加代码时出现String类型错误get(String)方法未定义

转载 作者:太空宇宙 更新时间:2023-11-03 10:50:02 25 4
gpt4 key购买 nike

为了从 ListView 中查找关键项,我没有在适配器中使用过滤器,但现在按照这个 link添加了过滤器,但在这一行 String playerName=songsList.get(i).get("title").toString(); 我收到错误

 The method get(String) is undefined for the type String

还有 searchResults.add(songsList.get(i)); 作为

The method add(HashMap<String,String>) in the type ArrayList<HashMap<String,String>> is not applicable for the arguments (String)

这是我的全部代码

 public class Home extends ListActivity {

//how many to load on reaching the bottom
int itemsPerPage = 15;
boolean loadingMore = false;

//For test data :-)
Calendar d = Calendar.getInstance();

ArrayList<String> songsList;
ListView list;
LazyAdapter adapter;
JSONArray posts;



//ArrayList thats going to hold the search results
ArrayList<HashMap<String, String>> searchResults;
LayoutInflater inflater;
// All static variables
static final String URL = "http://india.abc.net/ads/?json=get_recent_posts";


static final String KEY_POSTS = "posts";
static final String KEY_ID = "id";
static final String KEY_TITLE = "title";
static final String KEY_DATE = "date";
static final String KEY_CONTENT = "content";
static final String KEY_AUTHOR = "author";
static final String KEY_NAME = "name";
static final String KEY_ATTACHMENTS = "attachments";
static final String KEY_SLUG = "slug";
static final String KEY_THUMB_URL = "thumbnail";
static final String KEY_IMAGES = "images";
static final String KEY_URL = "url";



@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

final EditText searchBox=(EditText) findViewById(R.id.search);
final ListView list=(ListView)findViewById(android.R.id.list);

//get the LayoutInflater for inflating the customomView
//this will be used in the custom adapter
inflater=(LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);





final ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();


// Creating JSON Parser instance
final JSONParser jParser = new JSONParser();

// getting JSON string from URL
JSONObject json = jParser.getJSONFromUrl(URL);
try {
posts = json.getJSONArray(KEY_POSTS);

// looping through all song nodes <song>
for(int i = 0; i < posts.length(); i++){
JSONObject c = posts.getJSONObject(i);
// Storing each json item in variable
String id = c.getString(KEY_ID);
String title = c.getString(KEY_TITLE);
String date = c.getString(KEY_DATE);
String content = c.getString(KEY_CONTENT);
// to remove all <P> </p> and <br /> and replace with ""
content = content.replace("<br />", "");
content = content.replace("<p>", "");
content = content.replace("</p>", "");

//authornumber is agin JSON Object
JSONObject author = c.getJSONObject(KEY_AUTHOR);
String name = author.getString(KEY_NAME);

String url = null;
String slug = null;
try {
JSONArray atta = c.getJSONArray("attachments");
for(int j = 0; j < atta.length(); j++){
JSONObject d = atta.getJSONObject(j);

slug = d.getString(KEY_SLUG);

JSONObject images = d.getJSONObject(KEY_IMAGES);

JSONObject thumbnail = images.getJSONObject(KEY_THUMB_URL);
url = thumbnail.getString(KEY_URL);

}
} catch (Exception e) {
e.printStackTrace();

}




// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();

// adding each child node to HashMap key => value
map.put(KEY_ID, id);
map.put(KEY_TITLE, title);
map.put(KEY_DATE, date);
map.put(KEY_NAME, name);
map.put(KEY_CONTENT, content);
map.put(KEY_SLUG, slug);
map.put(KEY_URL, url);


// adding HashList to ArrayList
songsList.add(map);
}
}catch (JSONException e) {
e.printStackTrace();

}


//searchResults=OriginalValues initially
searchResults=new ArrayList<HashMap<String, String>>(songsList);


// Getting adapter by passing json data ArrayList
adapter=new LazyAdapter(this, songsList);
list.setAdapter(adapter);

searchBox.addTextChangedListener(new TextWatcher() {

public void onTextChanged(CharSequence s, int start, int before, int count) {
adapter.getFilter().filter(s.toString());
}

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

}

public void afterTextChanged(Editable s) {

}
});


// Launching new screen on Selecting Single ListItem
list.setOnItemClickListener(new OnItemClickListener() {

public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
HashMap<String, String> map = songsList.get(position);

Intent in = new Intent(Home.this, Singlemenuitem.class);
in.putExtra(KEY_TITLE, map.get(KEY_TITLE));
in.putExtra(KEY_DATE, map.get(KEY_DATE));
in.putExtra(KEY_NAME, map.get(KEY_NAME));
in.putExtra(KEY_CONTENT, map.get(KEY_CONTENT));
in.putExtra(KEY_URL, map.get(KEY_URL));

startActivity(in);
}
});

适配器类是

      public class LazyAdapter extends BaseAdapter implements Filterable{
TextView title;
private Activity activity;
// private TextWatcher textWatcher;
private ArrayList<HashMap<String, String>> data;
private static LayoutInflater inflater=null;
public ImageLoader imageLoader;
final EditText searchBox=(EditText) findViewById(R.id.search);
ArrayList<HashMap<String, String>> searchResults;
ArrayList<String> songsList;


public LazyAdapter(Activity a, ArrayList<HashMap<String, String>> d) {
activity = a;
data=d;
inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
imageLoader=new ImageLoader(activity.getApplicationContext());
}


private EditText findViewById(int search) {
// TODO Auto-generated method stub
return null;
}


public int getCount() {
return data.size();
}

public Object getItem(int position) {
return position;
}

public long getItemId(int position) {
return position;
}

public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;
if(convertView==null)
vi = inflater.inflate(R.layout.activity_home, null);

TextView title = (TextView)vi.findViewById(R.id.title); // title
TextView date = (TextView)vi.findViewById(R.id.date); // artist name
TextView content = (TextView)vi.findViewById(R.id.content); // duration
TextView name = (TextView)vi.findViewById(R.id.name);
// duration
ImageView thumb_image=(ImageView)vi.findViewById(R.id.list_image); // thumb image

HashMap<String, String> song = new HashMap<String, String>();
song = data.get(position);



// Setting all values in listview
title.setText(song.get(Home.KEY_TITLE));
date.setText(song.get(Home.KEY_DATE));
content.setText(song.get(Home.KEY_CONTENT));
name.setText(song.get(Home.KEY_NAME));

imageLoader.DisplayImage(song.get(Home.KEY_URL), thumb_image);
return vi;
}


public void add(String string) {
// TODO Auto-generated method stub

}


@Override

public Filter getFilter() {
Filter filter = new Filter() {
@SuppressWarnings("unchecked")
@Override
protected void publishResults(CharSequence data,FilterResults searchResults) {

songsList = (ArrayList<String>) searchResults.values; // has the filtered values
notifyDataSetChanged(); // notifies the data with new filtered values
}

@Override
protected FilterResults performFiltering(CharSequence playerName) {
// TODO Auto-generated method stub
return null;
}
};
String searchString=searchBox.getText().toString();
int textLength=searchString.length();

//clear the initial data set
searchResults.clear();

for(int i=0;i<songsList.size();i++)
{
String playerName=songsList.get(i).get("title").toString();

if(textLength<=playerName.length()){

//compare the String in EditText with Names in the ArrayList
if(searchString.equalsIgnoreCase(playerName.substring(0,textLength)))

searchResults.add(songsList.get(i));
}
}
return filter;


}
}

最佳答案

ArrayList<String> songsList;

所以 songsList 是一个字符串数组列表...如果您执行 songsList.get(i),您将得到一个字符串。 String 对象没有“get”方法,因此您无法使用

songsList.get(i).get("title").toString().

同样的事情发生在这里:

searchResults=new ArrayList<HashMap<String, String>>

因此,如果您调用 searchResults.add,则必须传递 HashMap ,而不是字符串。

请再次检查您的类型定义,它会起作用。

关于android - android中adapter的filter类添加代码时出现String类型错误get(String)方法未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14851659/

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