0

RecyclerView.Adapter ..の共有設定を使用する方法私はRecyclerView.Adapter.butで共有された設定値を使用しましたが、共有環境設定に保存されているものは何もありません。正確には共有環境設定を使用しなければなりません。?RecyclerView.Adapterまたはactivityでは?RecyclerView.Adapterで共有設定を使用するには?

public class CardAdapter extends RecyclerView.Adapter<CardAdapter.ViewHolder> { 

    private ImageLoader imageLoader; 
    private Context context; 
    private String gd; 

    public static final String SHARED_PREF_NAME = "myloginapp"; 
    //We will use this to store the boolean in sharedpreference to track user is loggedin or not 
    public static final String LOGGEDIN_SHARED_PREF = "loggedin"; 
    public static final String GROUPSNAME_SHARED_PREF = "groupname"; 

    public CardAdapter(Context context) { 
     this.context = context; 
    } 

     //List of superHeroes 
     List<Group> groups; 

     public CardAdapter(List <Group> groups, Context context) { 
      super(); 
      //Getting all the superheroes 
      this.groups = groups; 
      this.context = context; 
     } 

     @Override 
     public ViewHolder onCreateViewHolder (ViewGroup parent,int viewType){ 
      View v = LayoutInflater.from(parent.getContext()) 
        .inflate(R.layout.groups_list, parent, false); 
      ViewHolder viewHolder = new ViewHolder(v); 
      return viewHolder; 
     } 

     @Override 
     public void onBindViewHolder (ViewHolder holder,int position){ 

      Group group1 = groups.get(position); 

      imageLoader = CustomVolleyRequest.getInstance(context).getImageLoader(); 
      imageLoader.get(group1.getPic(), ImageLoader.getImageListener(holder.imageView, R.drawable.ic_launcher, android.R.drawable.ic_dialog_alert)); 

      holder.imageView.setImageUrl(group1.getPic(), imageLoader); 
      holder.groupname.setText(group1.getGname());//i want to store this value in shared preference.. 
      holder.groupinfo.setText(group1.getGinfo()); 
      gd = holder.groupname.getText().toString();//variable gd is storing any value. 
      holder.add.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        Intent intent = new Intent(context, Viewgroup1.class); 
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
        context.startActivity(intent); 
       } 
      }); 

     } 

     @Override 
     public int getItemCount() { 
      return groups.size(); 
     } 

     class ViewHolder extends RecyclerView.ViewHolder { 
      public NetworkImageView imageView; 
      public TextView groupname; 
      public TextView groupinfo; 
      public Button add; 


      public ViewHolder(View itemView) { 
       super(itemView); 
       imageView = (NetworkImageView) itemView.findViewById(R.id.imageViewHero); 
       groupname = (TextView) itemView.findViewById(R.id.textViewName); 
       groupinfo = (TextView) itemView.findViewById(R.id.textViewRank); 
       add = (Button) itemView.findViewById(R.id.button7); 
       //String gd = holder.groupname.getText().toString(); 

       SharedPreferences sharedPreferences1 = context.getSharedPreferences(SHARED_PREF_NAME, Context.MODE_PRIVATE); 

       //Creating editor to store values to shared preferences 
       SharedPreferences.Editor editor = sharedPreferences1.edit(); 

       //Adding values to editor 
       editor.putBoolean(LOGGEDIN_SHARED_PREF, true); 
       editor.putString(GROUPSNAME_SHARED_PREF, gd); 

      } 
     } 
    } 

Viewgroup.java

public class Viewgroup extends AppCompatActivity { 

    //Creating a List of superheroes 
    private List<Group> listSuperHeroes; 
    private String vault; 
    //Creating Views 
    private RecyclerView recyclerView; 
    private RecyclerView.LayoutManager layoutManager; 
    private RecyclerView.Adapter adapter; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.recycle); 

     //Initializing Views 
     recyclerView = (RecyclerView) findViewById(R.id.recyclerView); 
     recyclerView.setHasFixedSize(true); 
     layoutManager = new LinearLayoutManager(this); 
     recyclerView.setLayoutManager(layoutManager); 

     //Initializing our superheroes list 
     listSuperHeroes = new ArrayList<>(); 
     SharedPreferences sharedPreferences = getSharedPreferences(ProfileLogin.SHARED_PREF_NAME, MODE_PRIVATE); 
     vault = sharedPreferences.getString(ProfileLogin.EMAIL_SHARED_PREF,"Not Available"); 
     //Calling method to get data 
     getData(); 
    } 

    //This method will get data from the web api 
    private void getData(){ 
     //Showing a progress dialog 
     final ProgressDialog loading = ProgressDialog.show(this,"Loading Data", "Please wait...",false,false); 

     //Creating a json array request 
     JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Config.DATA_URL+vault, 
       new Response.Listener<JSONArray>() { 
        @Override 
        public void onResponse(JSONArray response) { 
         //Dismissing progress dialog 
         loading.dismiss(); 

         //calling method to parse json array 
         parseData(response); 
        } 
       }, 
       new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError error) { 

        } 
       }); 

     //Creating request queue 
     RequestQueue requestQueue = Volley.newRequestQueue(this); 

     //Adding request to the queue 
     requestQueue.add(jsonArrayRequest); 
    } 

    //This method will parse json data 
    private void parseData(JSONArray array){ 
     for(int i = 0; i<array.length(); i++) { 
      Group group1 = new Group(); 
      JSONObject json = null; 
      try { 
       json = array.getJSONObject(i); 
       group1.setPic(json.getString(Config.TAG_IMAGE_URL)); 
       group1.setGname(json.getString(Config.TAG_NAME)); 
       group1.setGinfo(json.getString(Config.TAG_INFO)); 

      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
      listSuperHeroes.add(group1); 
     } 

     //Finally initializing our adapter 
     adapter = new CardAdapter(listSuperHeroes, this); 

     //Adding adapter to recyclerview 
     recyclerView.setAdapter(adapter); 


     /* recyclerView.setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       final Button add = (Button) v.findViewById(R.id.button7); 
       final TextView txtStatusChange = (TextView) v.findViewById(R.id.textViewName); 
       //final TextView txtStatusChange1 = (TextView) v.findViewById(R.id.textView33); 
       add.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 

         Intent intent = new Intent(Viewgroup.this, Viewgroup1.class); 
         intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
         startActivity(intent); 
         // Log.e(TAG_IMAGE_URL, "hello text " + txtStatusChange.getText().toString() + " TAG " + txtStatusChange.getTag().toString()); 
         Toast.makeText(Viewgroup.this, txtStatusChange.getText().toString(), Toast.LENGTH_SHORT).show(); 
        } 
       }); 
       return false; 
      } 
     });*/ 
    } 
} 
+2

変更を保存するには、 'commit'または' apply'メソッドを呼び出しますか? –

+0

ああ、私の悪い...バグを見つけてくれてありがとう..今すぐ試してみよう。 –

+0

@prosper K..why共有の設定が更新されていない..?私はholder.add.setOnClickListenerの共有設定を使っている.OnClickListener()..しかし、値が更新されていません.. –

答えて

1

を追加..?

使用のようSharedpreferencesに値を保存するために活動を開始する前に、ボタンのonClickの方法:

... 
gd = holder.groupname.getText().toString(); 
holder.add.setTag(gd); 
... 
    @Override 
    public void onClick(View view) { 
     String strValue=view.getTag().toString(); 
     ... save strValue in Sharedpreferences 
     ... 
     editor.putString(GROUPSNAME_SHARED_PREF, strValue); 
     editor.apply(); 
     // start new Activity.. 
     } 
... 
+0

ありがとう!! –

+0

@prosper K ..あなたがこの1つを見ることができることができれば私が助けることができるか。[質問](http://stackoverflow.com/questions/38895924/different-navigationdrawer-items-for-different-activities-in -アンドロイド) –

2

あなたはSharedpreferencesにデータを保存するためにeditor.commit()またはeditor.apply()を追加する必要があります。共有好みが更新されていない理由は、この

//Adding values to editor 
editor.putBoolean(LOGGEDIN_SHARED_PREF, true); 
editor.putString(GROUPSNAME_SHARED_PREF, gd); 
editor.apply(); 

あなたのコードの下
+0

なぜ共有の設定が更新されていない..?私はholder.add.setOnClickListener(new View.OnClickListener ()..しかし、値は更新されていません.. –

+0

editor.applyを追加しますか? – Vasilisfoo

+0

はい、私はその答えを1つ増やしました。答えの感謝。 –

関連する問題