如何在单击上一个 Activity 的项目(Listview)后突出显示下一个 Activity 的项目(Listview)?
How to Highlight the Item (Listview) of Next Activity After Clicking the Item(Listview) of Previous Activity?
我有两个Fragments
。一个 Fragment
由问题组成,而另一个 Fragment
由答案组成。例如,如果一个人点击问题 (8) 这意味着你可以说 Item
否 8,那么它应该转到下一个 activity 并突出显示该问题的答案 (8)。我卡住了。我将非常感谢你。
这是一些代码,它们正在向下一个 Activity 发送问题编号或列出项目编号,而下一个 Activity 代码接收此问题编号,我将其保存到 Interger
"a" 中。现在什么类型的 IF 条件可以在 Next Activity?
First Activity
lst.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
int index = position + 1;
Intent it = new Intent(this.getActivity(), NextActivity.class);
it.putExtra("Qlist", index);
startActivity(it);
}
Next Activity
Intent it = getActivity().getIntent();
int a = it.getIntExtra("Qlist", 0);
String result=String.valueOf(a);
Toast.makeText(getActivity(), ""+a, Toast.LENGTH_LONG).show();
ListView Adapter code of First Activity (using SQlite)
DatabaseAccess db=DatabaseAccess.getInstance(getActivity().getApplicationContext());
List<String> lst;
db.open();
lst=db.getexamq();
db.close();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(ExamQ.this.getActivity(), android.R.layout.simple_list_item_1, lst);
lv.setAdapter(adapter);
ListView Adapter code of Next Activity (using SQlite)
DatabaseAccess db=DatabaseAccess.getInstance(getActivity().getApplicationContext());
List<String> lst;
db.open();
lst=db.getexamq();
db.close();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(ExamA.this.getActivity(), android.R.layout.simple_list_item_1, lst);
lv.setAdapter(adapter);
- 使用intent Bundle将questionId或question No移动到下一个activity
- 在Questions ListView的适配器中,为questionId相似的问题设置不同的背景色。您甚至可以将背景设置为具有淡入淡出动画或在一定的毫秒数或秒数后变为正常。
需要的代码很多写点东西(一些代码),我们可以在 ListViewAdapter 上提供帮助,以防它不起作用
编辑:快速自定义适配器代码示例
lv.setAdapter(new ArrayAdapter(ExamQ.this.getActivity(), android.R.layout.simple_list_item_1, android.R.id.text1, lst){
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View v = convertView;
final String examQ = lst[position];
if (v == null) {
LayoutInflater vi = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(android.R.layout.simple_list_item_1, null);
}
TextView tv = (TextView) v.findViewById(android.R.id.text1);
tv.setText(examQ);
if( examQ.equals(result)) { // Unique identifier here
v.setBackground(Color.RED); //Some other fancy color here
}
return v;
}
});
但是,我刚刚发现您没有为每个问题设置唯一标识符。所以暂时只使用问题字符串并将其传递给下一个activity
假设第二个片段的列表视图中的每个答案都有一个文本视图。然后你可以比较第二个片段中listview适配器的getView()
中的问题id。现在,当您找到答案时,只需致电 textview.setBackgroundColor()
.
编辑:
在lv.setAdapter (adapter);
之后添加
View v = lv.getViewAt(a);
if(v!=null)
v.setBackgroundColor (Color.RED);
我有两个Fragments
。一个 Fragment
由问题组成,而另一个 Fragment
由答案组成。例如,如果一个人点击问题 (8) 这意味着你可以说 Item
否 8,那么它应该转到下一个 activity 并突出显示该问题的答案 (8)。我卡住了。我将非常感谢你。
这是一些代码,它们正在向下一个 Activity 发送问题编号或列出项目编号,而下一个 Activity 代码接收此问题编号,我将其保存到 Interger
"a" 中。现在什么类型的 IF 条件可以在 Next Activity?
First Activity
lst.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
int index = position + 1;
Intent it = new Intent(this.getActivity(), NextActivity.class);
it.putExtra("Qlist", index);
startActivity(it);
}
Next Activity
Intent it = getActivity().getIntent();
int a = it.getIntExtra("Qlist", 0);
String result=String.valueOf(a);
Toast.makeText(getActivity(), ""+a, Toast.LENGTH_LONG).show();
ListView Adapter code of First Activity (using SQlite)
DatabaseAccess db=DatabaseAccess.getInstance(getActivity().getApplicationContext());
List<String> lst;
db.open();
lst=db.getexamq();
db.close();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(ExamQ.this.getActivity(), android.R.layout.simple_list_item_1, lst);
lv.setAdapter(adapter);
ListView Adapter code of Next Activity (using SQlite)
DatabaseAccess db=DatabaseAccess.getInstance(getActivity().getApplicationContext());
List<String> lst;
db.open();
lst=db.getexamq();
db.close();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(ExamA.this.getActivity(), android.R.layout.simple_list_item_1, lst);
lv.setAdapter(adapter);
- 使用intent Bundle将questionId或question No移动到下一个activity
- 在Questions ListView的适配器中,为questionId相似的问题设置不同的背景色。您甚至可以将背景设置为具有淡入淡出动画或在一定的毫秒数或秒数后变为正常。
需要的代码很多写点东西(一些代码),我们可以在 ListViewAdapter 上提供帮助,以防它不起作用
编辑:快速自定义适配器代码示例
lv.setAdapter(new ArrayAdapter(ExamQ.this.getActivity(), android.R.layout.simple_list_item_1, android.R.id.text1, lst){
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View v = convertView;
final String examQ = lst[position];
if (v == null) {
LayoutInflater vi = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(android.R.layout.simple_list_item_1, null);
}
TextView tv = (TextView) v.findViewById(android.R.id.text1);
tv.setText(examQ);
if( examQ.equals(result)) { // Unique identifier here
v.setBackground(Color.RED); //Some other fancy color here
}
return v;
}
});
但是,我刚刚发现您没有为每个问题设置唯一标识符。所以暂时只使用问题字符串并将其传递给下一个activity
假设第二个片段的列表视图中的每个答案都有一个文本视图。然后你可以比较第二个片段中listview适配器的getView()
中的问题id。现在,当您找到答案时,只需致电 textview.setBackgroundColor()
.
编辑:
在lv.setAdapter (adapter);
之后添加
View v = lv.getViewAt(a);
if(v!=null)
v.setBackgroundColor (Color.RED);