2017-08-03 11 views
0

データベースを他のクラスに更新しています。メインアクティビティを取得したときにカスタムリストビューを更新します。私のcustomListviewはまだ立っています 私はこの問題を探しましたが、私はそれを自分で解決できませんでした。この問題を解決するコードはどこに追加する必要がありますか?私の問題を解決しなかった3日を助けてください。私のカスタムリストビューをリフレッシュする方法

 public class MainActivity extends AppCompatActivity { 
veritabani vtabani; //database 
List<Yukleclas> yuklele =new ArrayList<Yukleclas>(); 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    vtabani=new veritabani(this); 
    OzelAdaptor adaptor=new OzelAdaptor(this,yuklele); 



    ListView listView=(ListView) findViewById(R.id.listview); 


    String[] sutunlar = 


    {"id","bilgi","simdikiyil","simdikiay","simdikigun","alarmsaat", 
    "alarmdakika","gsonrayil","gsonraay","gsonragun","hsonrayil","hsonraay", 
    "hsonragun","asonrayil","asonraay","asonragun","seviye","durum"}; 

SQLiteDatabase dboku =vtabani.getReadableDatabase(); 
Cursorcursor=dboku.query("tablo_adi",sutunlar,null,null,null,null,null); 
while (cursor.moveToNext()) { 
if (cursor.getInt(17)==1) { 
yuklele.add(new Yukleclas(cursor.getString(1), cursor.getInt(2), 
cursor.getInt(3), cursor.getInt(4), 
cursor.getInt(7),cursor.getInt(8),cursor.getInt(9),cursor.getInt(10), 
cursor.getInt(11),cursor.getInt(12),cursor.getInt(13),cursor.getInt(14), 
cursor.getInt(15),cursor.getInt(16))); 
} 
} 
cursor.close(); 
dboku.close(); 
listView.setAdapter(adaptor); 
adaptor.notifyDataSetChanged(); 
} 
public void ekleyegit(View view) { 
Intent intent =new Intent(this,ekleactivity.class); 
startActivity(intent); 
finish(); 
}} 

、これはmyAdapterです:

public class OzelAdaptor extends BaseAdapter { 

LayoutInflater layoutInflater; 
List<Yukleclas> list; 

public OzelAdaptor(Activity activity,List<Yukleclas> mList){ 
layoutInflater= (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    list=mList; 

} 
@Override 
public int getCount() { 
    return list.size(); 
} 

@Override 
public Object getItem(int position) { 
    return list.get(position); 
} 

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

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

    View satirView; 
    satirView=layoutInflater.inflate(R.layout.satir,null); 
    TextView tv_tarih = (TextView) satirView.findViewById(R.id.text_tarih); 
    TextView tv_bilgi= (TextView) satirView.findViewById(R.id.text_bilgi); 
    ImageView imageView= (ImageView) satirView.findViewById(R.id.imageView); 


    Yukleclas yukleclas =list.get(position); 
    tv_bilgi.setText(yukleclas.getBilgi()); 


    if(yukleclas.getSeviye()==1){ 
     tv_tarih.setText("Sonraki tekrar:" +yukleclas.getGun() +"/" +yukleclas.getAy() + "/" +yukleclas.getYil()); 
    }else if(yukleclas.getSeviye()==2){ 
     tv_tarih.setText("Sonraki tekrar:" +yukleclas.getGsgun() +"/" +yukleclas.getGsay() + "/" +yukleclas.getGsyil()); 
    }else if (yukleclas.getSeviye()==3){ 
     tv_tarih.setText("Sonraki tekrar:" +yukleclas.getHsgun() +"/" +yukleclas.getHsay() + "/" +yukleclas.getHsyil()); 
    }else if (yukleclas.getSeviye()==4){ 
     tv_tarih.setText("Sonraki tekrar:" +yukleclas.getAsgun() +"/" +yukleclas.getAsay() + "/" +yukleclas.getAsyil()); 
    } 







    if(yukleclas.getSeviye()==1){ 
     imageView.setImageResource(bir); // eğer 1. seviyede ise bir isimli ikonu göster 
    }else if(yukleclas.getSeviye()==2){ 
     imageView.setImageResource(iki); 
    }else if(yukleclas.getSeviye()==3){ 
     imageView.setImageResource(uc); 
    }else if(yukleclas.getSeviye()==4){ 
     imageView.setImageResource(ic_launcher); 
    } 


    return satirView; 
} 

} 

と、これは、設定を取得するために私のクラスである:

public class Yukleclas { 
private String bilgi; 
private int yil; 
private int ay; 
private int gun; 
private int seviye; 
private int gsyil; 
private int gsay; 
private int gsgun; 
private int hsyil; 
private int hsay; 
private int hsgun; 
private int asyil; 
private int asay; 
private int asgun; 


public Yukleclas(String mBilgi,int mYil,int mAy,int mGun,int mGsyil,int 
mGsay,int mGsgun,int mHsyil,int mHsay,int mHsgun,int mAsyil,int mAsay,int 
mAsgun,int mSeviye){ 
    yil=mYil; 
    bilgi=mBilgi; 
    ay=mAy; 
    gun=mGun; 
    gsyil=mGsyil; 
    gsay=mGsay; 
    gsgun=mGsgun; 
    hsyil=mHsyil; 
    hsay=mHsay; 
    hsgun=mHsgun; 
    asyil=mAsyil; 
    asay=mAsay; 
    asgun=mAsgun; 
    seviye=mSeviye; 

} 

public int getYil() { 
    return yil; 
} 

public void setYil(int yil) { 
    this.yil = yil; 
} 

public int getSeviye() { 
    return seviye; 
} 

public void setSeviye(int yil) { 
    this.seviye = seviye; 
} 

public String getBilgi() { 
    return bilgi; 
} 

public void setBilgi(String bilgi) { 
    this.bilgi = bilgi; 
} 

public int getAy() { 
    return ay; 
} 

public void setAy(int ay) { 
    this.ay = ay; 
} 

public int getGun() { 
    return gun; 
} 

public void setGun(int gun) { 
    this.gun = gun; 
} 

public int getGsyil() {return gsyil; 
} 

public void setGsyil(int gsyil) {this.gsyil = gsyil; 
} 

public int getGsay() {return gsay; 
} 

public void setGsay(int gsay) {this.gsay = gsay; 
} 

public int getGsgun() {return gsgun; 
} 

public void setGsgun(int gsgun) {this.gsgun = gsgun; 
} 

public int getHsyil() {return hsyil; 
} 

public void setHsyil(int hsyil) {this.hsyil = hsyil; 
} 

public int getHsay() {return hsay; 
} 

public void setHsay(int hsay) {this.hsay = hsay; 
} 

public int getHsgun() {return hsgun; 
} 

public void setHsgun(int hsgun) {this.hsgun = hsgun; 
} 

public int getAsyil() {return asyil; 
} 

public void setAsyil(int asyil) {this.asyil = asyil; 
} 

public int getAsay() {return asay; 
} 

public void setAsay(int asay) {this.asay = asay; 
} 

public int getAsgun() {return asgun; 
} 

public void setAsgun(int asgun) {this.asgun = asgun; 
} 
} 

私はそれが非常に複雑である知っているが、私のcustomlistviewを交換する方法は?

+0

今は 'adaptor.notifyDataSetChanged();'にコメントしてみてください。私はあなたの質問をまだ理解していません。あなたのリストは表示されるかどうか? –

+0

私のリストは表示されていますが、私は常に古いデータを見ています。Adaptor.notifyDataSetChanged()を使用しようとしていますが、間違った場所に置いたと思います。 – kemal

+0

なぜ単純な 'SimpleCursorAdapter'を使わないのですか? – pskink

答えて

0

簡単な方法は、あなたのonResume機能にadapter.notifyDataSetChanged()を呼び出すことです。

しかし、私はあなたのlistだけあなたがadapter.notifyDataSetChanged()呼び出して更新されているかどうかをチェックお勧めします。複数の方法でこれを行うことができますが、より洗練されたアプローチでは、イベントを発生させて聴くことができるEventBusを使用してください。dataBaseを更新するたびにイベントを発生させ、このイベントを聞くにはadapter.notifyDataSetChanged

+0

†onResume関数がありません。どのクラスにadapter.notifyDataSetChanged()を追加する必要がありますか? – kemal

+0

MainActivityオーバーライドonResumeで追加してください –

関連する問題