приращение кнопки сохраненного значения в baseadapter - PullRequest
1 голос
/ 12 февраля 2020

У меня есть базовый адаптер и значение приращения клика в текстовом просмотре. Я хочу сохранить значение приращения, выбрав sharedpreference, но я не смог этого сделать, пожалуйста, помогите мне решить его. Спасибо, что есть мой код:

public class BaseAdapter2 extends BaseAdapter {  

 private Context mContext;     
    private Activity activity; 
  private static ArrayList titre, description; 
  private static LayoutInflater inflater = null;     
   private int points; 
 private SharedPreferences pref;
private final String PREF_NAME = "pref";  
 private final String POINTS = "totalPoints";
public BaseAdapter2(Activity a, ArrayList b, ArrayList desc) {
   activity = a;  
 this.titre = b;  
 this.description = desc;    
 inflater = (LayoutInflater) activity   .getSystemService(Context.LAYOUT_INFLATER_SERVICE);     }     
public int getCount() {   return titre.size();   }     public Object getItem(int position) {   return position;   }     public long getItemId(int position) {   return position;   }     public View getView(int position, View convertView, ViewGroup parent) {   View vi = convertView;   if (convertView == null) {      vi = inflater.inflate(R.layout.searchperso, null);   }    final TextView tv = (TextView) vi.findViewById(R.id.chiffre);
TextView incrementer = (TextView) vi.findViewById(R.id.incrementer);

incrementer.setOnClickListener(new View.OnClickListener() {  
 @Override  

 public void onClick(View v) {

   points++;    
   tv.setText("" + points);   

     }   });    


 return vi;  
 }       

public BaseAdapter2(Context context) {
mContext = context;
pref = mContext.getSharedPreferences(PREF_NAME,0);
points = pref.getInt(POINTS,0);
SharedPreferences.Editor myEditor = pref.edit();
myEditor.putInt(POINTS, points);
myEditor.commit();
}
}```

Ответы [ 3 ]

0 голосов
/ 12 февраля 2020

В вашем инкременте щелкните на прослушивателе, например, так:

incrementer.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View v) {
            points = pref.getInt(POINTS, 0); \\ When click it get previous value 
            points++; \\ then increment the previous valu
            tv.setText("" + points); \\ Set the
            SharedPreferences.Editor myEditor = pref.edit();
            myEditor.putInt(POINTS, points);  \\ Save current valu to the Shared Pref
            myEditor.commit();
            }
        });

Также вам не нужен второй конструктор

0 голосов
/ 12 февраля 2020

E / AndroidRuntime: FATAL EXCEPTION: main

              java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.SharedPreferences android.content.Context.getSharedPreferences(java.lang.String, int)' on a null object reference
                  at example.com.BaseAdapter2.getView(BaseAdapter2.java:180)
                  at android.widget.AbsListView.obtainView(AbsListView.java:2346)
                  at android.widget.ListView.makeAndAddView(ListView.java:1875)
                  at android.widget.ListView.fillDown(ListView.java:702)
                  at android.widget.ListView.fillFromTop(ListView.java:763)
                  at android.widget.ListView.layoutChildren(ListView.java:1670)
                  at android.widget.AbsListView.onLayout(AbsListView.java:2148)
                  at android.view.View.layout(View.java:16630)
                  at android.view.ViewGroup.layout(ViewGroup.java:5437)
                  at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
                  at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
                  at android.widget.TableLayout.onLayout(TableLayout.java:445)
                  at android.view.View.layout(View.java:16630)
                  at android.view.ViewGroup.layout(ViewGroup.java:5437)
                  at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
                  at android.widget.LinearLayout.layoutHorizontal(LinearLayout.java:1732)
                  at android.widget.LinearLayout.onLayout(LinearLayout.java:1497)
                  at android.view.View.layout(View.java:16630)
                  at android.view.ViewGroup.layout(ViewGroup.java:5437)
                  at android.support.design.widget.CoordinatorLayout.layoutChild(CoordinatorLayout.java:1166)
                  at android.support.design.widget.CoordinatorLayout.onLayoutChild(CoordinatorLayout.java:851)
                  at android.support.design.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:870)
                  at android.view.View.layout(View.java:16630)
                  at android.view.ViewGroup.layout(ViewGroup.java:5437)
                  at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:1172)
                  at android.view.View.layout(View.java:16630)
                  at android.view.ViewGroup.layout(ViewGroup.java:5437)
                  at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
                  at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
                  at android.view.View.layout(View.java:16630)
                  at android.view.ViewGroup.layout(ViewGroup.java:5437)
                  at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
                  at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
                  at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
                  at android.view.View.layout(View.java:16630)
                  at android.view.ViewGroup.layout(ViewGroup.java:5437)
                  at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
                  at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
                  at android.view.View.layout(View.java:16630)
                  at android.view.ViewGroup.layout(ViewGroup.java:5437)
                  at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
                  at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
                  at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
                  at android.view.View.layout(View.java:16630)
                  at android.view.ViewGroup.layout(ViewGroup.java:5437)
                  at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
                  at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
                  at com.android.internal.policy.PhoneWindow$DecorView.onLayout(PhoneWindow.java:2678)
                  at android.view.View.layout(View.java:16630)
                  at android.view.ViewGroup.layout(ViewGroup.java:5437)
                  at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2171)
                  at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1931)
                  at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107)
                  at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6013)
                  at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
                  at android.view.Choreographer.doCallbacks(Choreographer.java:670)
                  at android.view.Choreographer.doFrame(Choreographer.java:606)
                  at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
                  at android.os.Handler.handleCallback(Handler.java:739)
                  at android.os.Handler.dispatchMessage(Handler.java:95)
                at android.os.`
0 голосов
/ 12 февраля 2020

Вам нужно хранить данные в sharedpreference после каждого клика.

public class BaseAdapter2 extends BaseAdapter {

    private Context mContext;
    private Activity activity;
    private static ArrayList titre, description;
    private static LayoutInflater inflater = null;
    private int points;
    private SharedPreferences pref;
    private final String PREF_NAME = "pref";
    private final String POINTS = "totalPoints";

    public BaseAdapter2(Activity a, ArrayList b, ArrayList desc) {
        activity = a;
        initPrefs(a);
        this.titre = b;
        this.description = desc;
        inflater = (LayoutInflater) 
    activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    public int getCount() {
        return titre.size();
    }

    public Object getItem(int position) {
        return position;
    }

    public long getItemId(int position) {
        return position;
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        View vi = convertView;
        if (convertView == null) {
            vi = inflater.inflate(R.layout.searchperso, null);
        }
        final TextView tv = (TextView) vi.findViewById(R.id.chiffre);
        TextView incrementer = (TextView) vi.findViewById(R.id.incrementer);

        incrementer.setOnClickListener(new View.OnClickListener() {
            @Override

            public void onClick(View v) {

                points++;
                tv.setText("" + points);
                SharedPreferences.Editor myEditor = pref.edit();
                myEditor.putInt(POINTS, points);
                myEditor.commit();
            }
        });


        return vi;
    }
   private void initPrefs(Context context){
        pref = mContext.getSharedPreferences(PREF_NAME, 0);
        points = pref.getInt(POINTS, 0);    
    }
    public BaseAdapter2(Context context) {
        mContext = context;
         initPrefs(mContext);
    }
}
...