我如何才能拥有一个具有恒定项目位置的listView
?
假设您有一个 listview
,在 actionbar
上有一个 searchbox
。现在您想要过滤结果,并且希望即使在过滤之后,项目的位置编号也保持不变。
当我在 listView
上搜索时,下面的代码给了我不同的位置:
public class About extends ActionBarActivity {
private ListView mainListView ;
private ArrayAdapter<String> listAdapter ;
SearchView searchview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.about);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayShowTitleEnabled(false);
//searchview = new SearchView(getSupportActionBar().getThemedContext());
mainListView = (ListView) findViewById( R.id.mainListView );
String[] mTitles = getResources().getStringArray(R.array.lstview_Content);
String[] values= new String[5];
for(int i=0;i<values.length;i++){
values[i] = mTitles[i];
}
ArrayList<String> planetList = new ArrayList<String>();
planetList.addAll( Arrays.asList(values) );
listAdapter = new ArrayAdapter<String>(About.this, R.layout.lstview_layout,R.id.rowTextView, planetList);
mainListView.setAdapter( listAdapter );
mainListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position,long arg3) {
int itemposition = position;
String itemvalue = (String) mainListView.getItemAtPosition(position);
Toast.makeText(getApplicationContext(),
"Position :"+itemposition+" ListItem : " +itemvalue , Toast.LENGTH_LONG).show();
}
});
mainListView.setTextFilterEnabled(true);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}
@Override
public boolean onCreateOptionsMenu (Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.about, menu);
MenuItem searcehItem = menu.findItem(R.id.action_search);
searchview = (SearchView) MenuItemCompat.getActionView(searcehItem);
searchview.setQueryHint("ُُSearch");
searchview.setOnQueryTextListener(new OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String arg0) {
return false;
}
@Override
public boolean onQueryTextChange(String arg0) {
mainListView.setFilterText(arg0);
return false;
}
});
return super.onCreateOptionsMenu(menu);
}
}
最佳答案
在ActionBarActivity
中写入:
int ID = 0;
在onItemClick
中写入:
for (int i = 0; i < values.length; i++) {
if(values[i] == itemvalue)
{
ID = i;
}
}
Toast.makeText(getApplicationContext(),"Position :"+ID+" ListItem : " +itemvalue , Toast.LENGTH_LONG).show();
祝你好运。
关于java - 我如何在具有恒定项目位置的 ListView 上过滤项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24219929/