首页 > 解决方案 > 将列表视图点击值传递给具有共享首选项的另一个活动

问题描述

我有三个活动。

我想将点击数据从第一个活动传递到第三个活动。

第一(点击)>第二(点击)>第三

我的问题是:在SwipeNavAdapter

String data1 = sharedPreferences.getString(ListNavAdapter.ID_EXTRA, "") 不显示来自 的列表ListNavAdapter,但它显示来自 的列表CourseAdapter。我想ListNavAdapterSwipeNavAdapter.

第一个: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();
}

标签: javaandroidlistviewsharedpreferences

解决方案


我的问题是:在 SwipeNavAdapter

String data1 = sharedPreferences.getString(ListNavAdapter.ID_EXTRA, "") 不显示来自 ListNavAdapter 的列表,但它显示来自 CourseAdapter 的列表。我想从 SwipeNavAdapter 中的 ListNavAdapter 中获取单击的列表项。

我假设您正在使用与and中SharedPreferences使用的相同键来覆盖 中的值。确保输入和输入的键不同。CourseAdapterListNavAdapterID_EXTRAListNavAdapterID_EXTRAACourseAdapter

如果您在同一键下添加值,则该值将被覆盖sharedPreference


推荐阅读