java - 将列表视图点击值传递给具有共享首选项的另一个活动
问题描述
我有三个活动。
我想将点击数据从第一个活动传递到第三个活动。
第一(点击)>第二(点击)>第三
我的问题是:在SwipeNavAdapter
String data1 = sharedPreferences.getString(ListNavAdapter.ID_EXTRA, "")
不显示来自 的列表ListNavAdapter
,但它显示来自 的列表CourseAdapter
。我想ListNavAdapter
从SwipeNavAdapter
.
第一个:ListNavAdapter
SQLiteDatabase sqLiteDatabase = SqliteDatabase.getInstance(this.getContext()).getWritableDatabase();
Cursor cursor = sqLiteDatabase.rawQuery("SELECT CHAPTER FROM BOOK GROUP BY CHAPTER order by _id", new String[]{});
if (cursor.getCount() == 0) {
//
} else {
while (cursor.moveToNext()) {
listItem.add(cursor.getString(0));
}
arrayAdapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_list_item_1, listItem);
listView.setAdapter(arrayAdapter);
}
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getContext());
String achal=(String)adapterView.getItemAtPosition(i);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(ID_EXTRA, achal);
editor.apply();
Intent intent=new Intent(getActivity(), Course.class);
intent.putExtra(ID_EXTRA, String.valueOf(l));
startActivity(intent);
}
});
二:课程适配器
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getContext());
String data = sharedPreferences.getString(ListNavAdapter.ID_EXTRA, "") ;
SQLiteDatabase sqLiteDatabase = SqliteDatabase.getInstance(this.getContext()).getWritableDatabase();
Cursor cursor = sqLiteDatabase.rawQuery("SELECT TEXT_NO FROM BOOK WHERE CHAPTER='" + data + "' ORDER BY _id", new String[]{});
if (cursor.getCount() == 0) {
//
} else {
while (cursor.moveToNext()) {
listItem.add(cursor.getString(0));
}
arrayAdapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_list_item_1, listItem);
listView.setAdapter(arrayAdapter);
}
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getContext());
String achal1=(String)adapterView.getItemAtPosition(i);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(ID_EXTRAA, achal1);
editor.apply();
Intent intent=new Intent(getActivity(), SwipeNav.class);
intent.putExtra(ID_EXTRAA, String.valueOf(l));
startActivity(intent);
}
});
第三:SwipeNavAdapter
@Override
public Fragment getItem(int i) {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
String data1 = sharedPreferences.getString(ListNavAdapter.ID_EXTRA, "") ;
System.out.println(data1);
ArrayList<String> listItem1 = new ArrayList<String>();
Cursor cursor1 = sqLiteDatabase.rawQuery("SELECT TEXT FROM BOOK WHERE CHAPTER='" + data1 + "'", new String[]{});
if (cursor1.getCount() == 0) {
///
} else {
while (cursor1.moveToNext()) {
listItem1.add(cursor1.getString(0));
}
}
Object[] mStringArray1 = listItem1.toArray();
Fragment fragment = new AFragment();
Bundle args = new Bundle();
assert mStringArray1 != null;
args.putString(AFragment.ARG_OBJECT1, (String)mStringArray1[i]);
fragment.setArguments(args);
return fragment;
}
@Override
public int getCount() {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
String data1 = sharedPreferences.getString(ListNavAdapter.ID_EXTRA, "") ;
SQLiteDatabase sqLiteDatabase = SqliteDatabase.getInstance(context).getWritableDatabase();
ArrayList<String> listItem = new ArrayList<>();
Cursor cursor = sqLiteDatabase.rawQuery("SELECT TEXT FROM BOOK WHERE CHAPTER='" + data1 + "'", new String[]{});
while (cursor.moveToNext()) {
listItem.add(cursor.getString(cursor.getColumnIndex("TEXT")));
}
return listItem.size();
}
解决方案
我的问题是:在 SwipeNavAdapter
String data1 = sharedPreferences.getString(ListNavAdapter.ID_EXTRA, "") 不显示来自 ListNavAdapter 的列表,但它显示来自 CourseAdapter 的列表。我想从 SwipeNavAdapter 中的 ListNavAdapter 中获取单击的列表项。
我假设您正在使用与and中SharedPreferences
使用的相同键来覆盖 中的值。确保输入和输入的键不同。CourseAdapter
ListNavAdapter
ID_EXTRA
ListNavAdapter
ID_EXTRAA
CourseAdapter
如果您在同一键下添加值,则该值将被覆盖sharedPreference
。
推荐阅读
- ruby-on-rails - 图像未在 wicked_pdf 的 pdf 中呈现
- apache-kafka - 使用多个 KStream/KTable 实现 Micronaut/Kafka-Streams 的最佳实践?
- powershell - Powershell脚本如何处理直接传递给模块的参数
- python - 热绘制曲线并将其转换为 numpy
- c# - 试图制作“火与冰的舞蹈”并且遇到矢量问题
- angular - 嗨,我在 Angular 中使用 ngx-microsoft-bot-framework。我如何将 QNA Maker 服务添加到 TS 文件中
- docker - 任务 ':website:buildDockerImage' 执行失败。使用 Apache Beam 的 gradlew 构建
- javascript - Vuex getter 未定义但状态出现在控制台中
- r - R Shiny 如何选择输入表单数据框列(反应式)
- python - 使用python将文件上传到s3时更改元数据