有什么方法可以在列表视图中更改位置时跟踪项目?
Is there any way of tracking an item in a list view when it changes positions?
以下代码运行良好:
listView = findViewById(R.id.my_list);
String[] values = new String[]{
"TRT 1", "TRT Haber"
};
listView.setAdapter(arrayAdapter);
values = new ArrayList<>(Arrays.asList(values)).toArray(new String[0]);
arrayAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, android.R.id.text1,values);
listView.setAdapter(arrayAdapter);
listView.setOnItemClickListener((parent, view, position, id) -> {
if (position == 0) {
Intent intent = new Intent(view.getContext(), Activity1.class);
startActivity(intent);
}
if (position == 1) {
Intent intent = new Intent(view.getContext(), Activity2.class);
startActivity(intent);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main2, menu);
MenuItem menuItem = menu.findItem(R.id.search2);
SearchView searchView = (SearchView) menuItem.getActionView();
searchView.setQueryHint("Search channels");
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String s) {
return false;
}
@Override
public boolean onQueryTextChange(String s) {
SearchActivity.this.arrayAdapter.getFilter().filter(s);
return true;
}
});
return super.onCreateOptionsMenu(menu);
}
当我在列表视图中搜索一个项目时,它成为列表中的第一个项目(我希望发生这种情况),但是如果列表中的第二个项目改变了位置,它会打开错误的 activity。我知道这是因为下面的 if 语句和位置,但我已经坚持了大约一天如何修复它......
listView.setOnItemClickListener((parent, view, position, id) -> {
if (position == 0) {
Intent intent = new Intent(view.getContext(), Activity1.class);
startActivity(intent);
}
if (position == 1) {
Intent intent = new Intent(view.getContext(), Activity2.class);
startActivity(intent);
}
});
}
非常感谢任何帮助。 *没有显示错误
到目前为止,对于你的情况,这会起作用。
listView.setOnItemClickListener((parent, view, position, id) -> {
String item = ((TextView)view).getText().toString();
Intent intent = null;
switch (item) {
case "TRT 1":
intent = new Intent(view.getContext(), Activity1.class);
break;
case "TRT Haber":
intent = new Intent(view.getContext(), Activity2.class);
break;
}
startActivity(intent);
});
................................................ .........
还有其他方法可以实现此行为。
阵列适配器模型class(数据class)
为您添加的每个模型传递唯一 ID class。这将作为您行的标识符。现在根据这个id,你可以打开想要的activity.
检查 Recyclerview 实施。
以下代码运行良好:
listView = findViewById(R.id.my_list);
String[] values = new String[]{
"TRT 1", "TRT Haber"
};
listView.setAdapter(arrayAdapter);
values = new ArrayList<>(Arrays.asList(values)).toArray(new String[0]);
arrayAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, android.R.id.text1,values);
listView.setAdapter(arrayAdapter);
listView.setOnItemClickListener((parent, view, position, id) -> {
if (position == 0) {
Intent intent = new Intent(view.getContext(), Activity1.class);
startActivity(intent);
}
if (position == 1) {
Intent intent = new Intent(view.getContext(), Activity2.class);
startActivity(intent);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main2, menu);
MenuItem menuItem = menu.findItem(R.id.search2);
SearchView searchView = (SearchView) menuItem.getActionView();
searchView.setQueryHint("Search channels");
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String s) {
return false;
}
@Override
public boolean onQueryTextChange(String s) {
SearchActivity.this.arrayAdapter.getFilter().filter(s);
return true;
}
});
return super.onCreateOptionsMenu(menu);
}
当我在列表视图中搜索一个项目时,它成为列表中的第一个项目(我希望发生这种情况),但是如果列表中的第二个项目改变了位置,它会打开错误的 activity。我知道这是因为下面的 if 语句和位置,但我已经坚持了大约一天如何修复它......
listView.setOnItemClickListener((parent, view, position, id) -> {
if (position == 0) {
Intent intent = new Intent(view.getContext(), Activity1.class);
startActivity(intent);
}
if (position == 1) {
Intent intent = new Intent(view.getContext(), Activity2.class);
startActivity(intent);
}
});
}
非常感谢任何帮助。 *没有显示错误
到目前为止,对于你的情况,这会起作用。
listView.setOnItemClickListener((parent, view, position, id) -> {
String item = ((TextView)view).getText().toString();
Intent intent = null;
switch (item) {
case "TRT 1":
intent = new Intent(view.getContext(), Activity1.class);
break;
case "TRT Haber":
intent = new Intent(view.getContext(), Activity2.class);
break;
}
startActivity(intent);
});
................................................ .........
还有其他方法可以实现此行为。
阵列适配器模型class(数据class)
为您添加的每个模型传递唯一 ID class。这将作为您行的标识符。现在根据这个id,你可以打开想要的activity.
检查 Recyclerview 实施。