问题
i have a listView which is filled with an arraylist of strings and i want to make it clickable .. but i cant recognize which item was clicked
i've made this but it doesn't work !
is there way to know the string clicked ? if not is there a way to know even the position of clicked item?
public class SearchResults extends Activity{
public ArrayList<String> findMovieByName(String name) {
ArrayList<movie> matches = new ArrayList<movie>();
// go through list of members and compare name with given name
for(movie movie : MovieReg_activity.movies) {
if (movie.getName().contains(name)) {
matches.add(movie); // adds matching member to the return list
}
}
ArrayList<String> matchesNames = new ArrayList<String>();
int x=0;
for( movie movie : matches) {
String name65 = movie.getName();
matchesNames.add(x,name65);
x++ ;
}
return matchesNames; // return the matches, which is empty when no member with the given name was found
}
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
ListView lv=(ListView)findViewById(R.id.listView1);
TextView tv=(TextView)findViewById(R.id.textView1);
Bundle bundle =getIntent().getExtras();
if(bundle!=null){
String searchbar =bundle.getString("search value");
ArrayList<String> list = findMovieByName(searchbar);
int match_size=list.size();
tv.setText("no of matches=" +match_size);
ArrayAdapter<String> ad = new ArrayAdapter<String>(SearchResults.this, android.R.layout.simple_list_item_1, list);
lv.setAdapter(ad);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View position , int arg2,
long arg3) {
if( position.equals(1) ){
Toast.makeText(SearchResults.this,"1 chosen", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(SearchResults.this,"nothing", Toast.LENGTH_LONG).show();
}
}
});
}
}
}
回答1:
final ListView lv = (ListView) findViewById(R.id.yourListView);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> myAdapter, View myView, int myItemInt, long mylng) {
String selectedFromList =(String) (lv.getItemAtPosition(myItemInt));
}
});
来源:https://stackoverflow.com/questions/21889819/which-item-was-clicked-in-a-clickable-list-view