2016-05-17 1 views
0

андроид изменение адаптера массива данных

Here is my main class and Adapter together 
 
public class MainActivity extends Activity { 
 

 
public MyAdapter adapter; 
 
private View view; 
 
Context context; 
 
public ListView list; 
 

 
public int t[]; 
 

 
public SharedPreferences prefs; 
 
public SharedPreferences.Editor edit; 
 
public SharedPreferences preferences; 
 
public SharedPreferences.Editor editor; 
 

 
int [] btnNums={66,150,94,72,206,489,1481,731,131,91,145,137,662,770}; 
 
int [] tuesdaynum={351,14,308,19,134,514,305,68,104,129,62,47,409,630}; 
 
int [] wednesdaynum={744,131,184,846,37,336,812,88,1020,1286,1106,551,202,156}; 
 
int [] thursdaynum={206,662,731,1281,801,351,117,770,302,526,212,1100,1060,1100}; 
 
int [] fridaynum={232,998,209,80,73,270,312,55,110,78,209,114,161,1001}; 
 

 
int [] saturdaynum={20,48,573,319,108,66,116,500,46,68,286,201,256,113}; 
 
int [] sundaynum={137,148,56,124,68,490,18,156,14,48,20,86,514,298}; 
 

 
int [] btnNumsrefs={66,150,94,72,206,489,1481,731,131,91,145,137,662,770}; 
 

 
int yesterday; 
 

 

 
public void storeYesterday(Calendar a){ 
 
    yesterday=a.get(Calendar.DAY_OF_MONTH); 
 

 
    preferences=getSharedPreferences("yesterday",0); 
 
    editor=preferences.edit(); 
 
    editor.putInt("yesterday",yesterday); 
 

 
    editor.commit(); 
 
    
 
} 
 

 

 
public Integer getFromYesterday(){ 
 
    preferences=getSharedPreferences("yesterday",0); 
 
     int get =preferences.getInt("yesterday", 0); 
 

 
    return get; 
 
} 
 

 

 

 
int[] images = {R.drawable.a1, R.drawable.a2, R.drawable.a3, R.drawable.a4, R.drawable.a5, R.drawable.a6, R.drawable.a7, R.drawable.a8, R.drawable.a9, 
 
     R.drawable.a10, R.drawable.a11, R.drawable.a12, R.drawable.a13, R.drawable.a14}; 
 

 

 
int[] tuesday = {R.drawable.elkahhar, R.drawable.elvehhab, R.drawable.errezzak, R.drawable.elvahid, R.drawable.essamed, R.drawable.elkabid, R.drawable.elkadir, R.drawable.elhakem, R.drawable.eladl, 
 
     R.drawable.ellatif, R.drawable.elbatin, R.drawable.elvali, R.drawable.ettevvab, R.drawable.elmuntekim}; 
 
int[] wednesday = {R.drawable.elmuktedir, R.drawable.esselam, R.drawable.elmukaddim, R.drawable.elmuaahir, R.drawable.elevvel, R.drawable.elmusavvir, R.drawable.elhabir, R.drawable.elhalim, R.drawable.elazim, 
 
     R.drawable.elgafur, R.drawable.ezzahir, R.drawable.elmuteali, R.drawable.elberr, R.drawable.elafuv }; 
 

 

 

 
int[] thursday = {R.drawable.elcebbar, R.drawable.elmutekebbir2, R.drawable.elhaliik, R.drawable.elgafffar, R.drawable.ellahir, R.drawable.errafi, R.drawable.elmuiz, R.drawable.elmuzil, R.drawable.elbasir, 
 
     R.drawable.essekur, R.drawable.malikulmulk, R.drawable.zulcelalilikram, R.drawable.elganiy, R.drawable.elmugni }; 
 

 

 

 
int[] friday = {R.drawable.elkebir, R.drawable.elhafiz, R.drawable.elmukit, R.drawable.elhasib, R.drawable.elcelil, R.drawable.elkerim, R.drawable.elrakib, R.drawable.elmucib, R.drawable.elaliy, 
 
     R.drawable.elhakim, R.drawable.elmuksit, R.drawable.elcami, R.drawable.elmani, R.drawable.eddar}; 
 

 
int[] saturday = {R.drawable.elvedud, R.drawable.elmecid, R.drawable.elbais, R.drawable.essehid, R.drawable.elhak, R.drawable.elvekil, R.drawable.elkaviy, R.drawable.elmetin, R.drawable.elveliy, 
 
     R.drawable.elhamid, R.drawable.errauf, R.drawable.ennafi, R.drawable.ennur, R.drawable.elbaki}; 
 
int[] sunday = {R.drawable.elvasi, R.drawable.elmuhsi, R.drawable.elmubdi, R.drawable.elmuid, R.drawable.elmuhyi, R.drawable.elmumit, R.drawable.elhay, R.drawable.elkayyum, R.drawable.elvacid, 
 
     R.drawable.elmacid, R.drawable.elhadi, R.drawable.elbedi, R.drawable.erresid, R.drawable.essabur }; 
 
String[] exp; 
 
String[] exp2; 
 
String[] exp3; 
 
String[] exp4; 
 
String[] exp5; 
 
String[] exp6; 
 
String[] exp7; 
 

 
String[] mean; 
 

 

 
@Override 
 
protected void onCreate(Bundle savedInstanceState) { 
 
    super.onCreate(savedInstanceState); 
 
    setContentView(R.layout.activity_main); 
 
    edit= this.getSharedPreferences("NAME", Context.MODE_APPEND).edit(); 
 
    prefs = getSharedPreferences("NAME", Context.MODE_APPEND); 
 

 
    view=getWindow().getDecorView().getRootView(); 
 
    Admob.createLoadBanner(getApplicationContext(), view); 
 
    Admob.createLoadInterstitial(getApplicationContext(), null); 
 

 

 

 

 
    Resources res=getResources(); 
 

 

 

 

 
    exp= res.getStringArray(R.array.names); 
 
    exp2= res.getStringArray(R.array.faz2); 
 
    exp3= res.getStringArray(R.array.faz3); 
 
    exp4= res.getStringArray(R.array.faz4); 
 
    exp5= res.getStringArray(R.array.faz5); 
 
    exp6= res.getStringArray(R.array.faz6); 
 
    exp7= res.getStringArray(R.array.faz7); 
 
    mean=res.getStringArray(R.array.anlam); 
 
    list= (ListView) findViewById(R.id.listView); 
 

 
    Calendar cal = Calendar.getInstance(); 
 
    cal.setTime(new Date()); 
 
    Calendar cal2=Calendar.getInstance(); 
 
    cal2.setTime(new Date()); 
 

 

 

 

 
    int today = cal.get(Calendar.DAY_OF_MONTH); 
 

 

 
    if(today==Calendar.Monday){ 
 
     adapter.setData(this,exp3,thursday,mean,thursdaynum); 
 

 
    }else if(today==Calendar.TUESDAY){ 
 
     adapter.clear(); 
 
     adapter=new MyAdapter(this,exp2,tuesday,mean,tuesdaynum); 
 

 
    }//goes on 
 
     if(getFromYesterday()==null){ 
 
      storeYesterday(cal); 
 

 
     }else { 
 
      if(today!=getFromYesterday()) { 
 

 

 
       storeYesterday(cal); 
 

 
       adapter = new MyAdapter(this, exp, images, mean, t); 
 
       storeYesterday(cal); 
 

 
       edit.putInt("Count", btnNumsrefs.length); 
 
       int count = 0; 
 
       for (int i : btnNums) { 
 
        edit.putInt("IntValue_" + count++, i); 
 
       } 
 
      } 
 
       edit.commit(); 
 
     } 
 

 

 

 
    int[] ret; 
 
    Integer count1 = prefs.getInt("Count", 0); 
 
    if(count1!=null) { 
 
     ret = new int[count1]; 
 
     for (int i = 0; i < count1; i++) { 
 
      ret[i] = prefs.getInt("IntValue_" + i, i); 
 
      t=ret; 
 
     } 
 
    } 
 

 

 

 
    if(t!=null) 
 
    { 
 

 

 

 

 
      adapter = new MyAdapter(this, exp, images, mean, t); 
 

 
    }else 
 

 
    { 
 
     adapter = new MyAdapter(this, exp, images, mean, btnNums); 
 

 
    } 
 
    list.setAdapter(adapter); 
 
    adapter.notifyDataSetChanged(); 
 

 
    context=getApplicationContext(); 
 
} 
 

 
} 
 

 
class MyAdapter extends ArrayAdapter<String>{ 
 
    int [] images; 
 
    String [] titleArray; 
 
    String [] descriptionArray; 
 
    int [] btnNums; 
 
    MainActivity ma; 
 

 

 

 

 

 

 

 

 
    public MyAdapter(MainActivity m, String[] titles, int imgs[], String[] descp, int[] btnNum){ 
 

 
     super(m, R.layout.single_row, R.id.textView,titles); 
 
     this.images=imgs; 
 
     this.titleArray=titles; 
 
     this.descriptionArray=descp; 
 
     btnNums=btnNum; 
 

 

 
     this.ma=m; 
 

 

 

 

 

 

 

 
    } 
 
    
 
    @Override 
 
    public View getView(final int position, final View convertView, ViewGroup parent) { 
 

 

 

 

 
     LayoutInflater inflater= (LayoutInflater) ma.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
 
     final View row=inflater.inflate(R.layout.single_row, parent, false); 
 

 
     final TextView myTitle=(TextView)row.findViewById(R.id.textView); 
 

 
     myTitle.findViewById(R.id.textView); 
 

 
     final TextView descp=(TextView)row.findViewById(R.id.textView2); 
 
     final ImageView imageView = (ImageView) row.findViewById(R.id.imageView); 
 
     final Button button = (Button) row.findViewById(R.id.angry_btn); 
 
     final Vibrator a = (Vibrator) ma.getSystemService(Context.VIBRATOR_SERVICE); 
 

 

 

 

 

 

 

 

 
     if(ma.t!=null) 
 
     { 
 

 

 
      for(int i=0; i<14;i++){ 
 
       if (btnNums[position] <= 0) { 
 

 
        button.setText("OK"); 
 

 

 

 

 

 

 

 
       /* Integer index=(Integer) convertView.getTag(); 
 
        ma.list.removeViewAt(index); 
 
        ma.adapter.notifyDataSetChanged(); 
 
        */ 
 

 
       }else { 
 
        button.setText("" + ma.t[position]); 
 

 

 
       } 
 
       // button.setText("" + ma.t[position]); 
 
       imageView.setImageResource(images[position]); 
 
       myTitle.setText(titleArray[position]); 
 
       descp.setText(descriptionArray[position]); 
 

 

 
      } 
 
     }else 
 
     { 
 

 
      for(int i=0; i<14;i++){ 
 

 
       if (btnNums[position] <= 0) { 
 

 
        button.setText("OK"); 
 

 
       /* Integer index=(Integer) convertView.getTag(); 
 
        ma.list.removeViewAt(index); 
 
        ma.adapter.notifyDataSetChanged(); 
 
        */ 
 

 
       }else { 
 
        button.setText("" + btnNums[position]); 
 

 

 
       } 
 
       // button.setText("" + btnNums[position]); 
 
       imageView.setImageResource(images[position]); 
 
       myTitle.setText(titleArray[position]); 
 
       descp.setText(descriptionArray[position]); 
 

 

 
      } 
 
     } 
 

 

 

 
     button.setOnClickListener(new View.OnClickListener() { 
 

 
      @Override 
 
      public void onClick(View v) { 
 

 
       btnNums[position]--; 
 

 
       storeIntArray(btnNums); 
 

 

 
       a.vibrate(30); 
 

 

 

 

 

 
       int temp[]=getFromPrefs(); 
 
       ma.t=temp; 
 

 
       for (int i = 0; i <14; i++) { 
 
        if (btnNums[position] <= 0) { 
 

 
         button.setText("OK"); 
 

 
       /* Integer index=(Integer) convertView.getTag(); 
 
        ma.list.removeViewAt(index); 
 
        ma.adapter.notifyDataSetChanged(); 
 
        */ 
 

 
        }else { 
 
         button.setText("" + temp[position]); 
 

 

 
        } 
 

 
        imageView.setImageResource(images[position]); 
 
        myTitle.setText(titleArray[position]); 
 
        descp.setText(descriptionArray[position]); 
 

 

 
       } 
 
      } 
 
     }); 
 

 

 

 

 
     return row; 
 

 

 

 
    }

В моем приложении я использую пользовательский вид списка с различной DATAS. эти данные поступают из массивов, я хочу отправить новые массивы через конструктор в свой адаптер, проверив дату, но это не сработает.

после этих кодов я использовал эти строки

list.setAdapter(adapter); 
adapter.notifyDataSetChanged(); 

Пожалуйста, помогите мне stucked.

+0

Опубликовать код MyAdapter, мне нужно подтвердить его правильность, прежде чем делать какие-либо предложения – NezSpencer

+0

Я разместил код MyAdapter. Я использую этот адаптер в классе Activity. –

+0

нет решения? –

ответ

0

Почему бы вам не создать метод setData() в вашем адаптере, где вы очищаете текущие данные и устанавливаете новый, а затем вызываете метод notifyDataSetChanged.

Таким образом, вы не будете создавать и устанавливать один и тот же адаптер несколько раз, когда хотите изменить данные.

+0

public void setData (String [] title, int imgs [], String [] desp, int [] btnNum) { clear(); titleArray = название; images = imgs; descriptionArray = desp; btnNums = btnNum; notifyDataSetChanged(); } –

+0

Я использовал этот код, но я получил причину: java.lang.NullPointerException: попытка вызвать виртуальный метод 'void com.arksoft.maneviyatvakti.MyAdapter.setData (java.lang.String [], int [], java.lang.String [], int []) 'на ссылке нулевого объекта –

+0

Сначала вам нужно создать экземпляр своего адаптера, прежде чем устанавливать его в список, а затем вызвать метод setData. – Seishin

 Смежные вопросы

  • Нет связанных вопросов^_^