PDA

View Full Version : ارر در اجرای برنامه



zahra313
دوشنبه 22 آبان 1396, 01:54 صبح
سلام من یه دیتایس توی sqlite نوشتم و میخوام وصلش کنم به یه ریسایکلر ویو ولی به ارر برخوردم؛کسی میتونه کمکم کنه؟
کد کلاس MyDataBase

package com.example.zahra.project_jahad.Helper;


import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;

/**
* Created by Zahra on 11/8/2017.
*/
public class MyDatabase {

private static String COL_ID = "ID_Wonders";
private static String COL_Name = "Name_Wonders";
private static String COL_Text = "Text_Wonders";
private static String COL_Img = "Img_Wonders";
private static String COL_City = "City_Wonders";
private static String COL_Favorites = "Favorites_Wonders";


private static String DATABASE_PATH;
private static String DATABASE_NAME="MyDataBase";
private static String DATABASE_TABLE = "Wonders";
private static int DATABASE_VERSION = 1;


private ContHelper contenting;
private Context context;
private SQLiteDatabase cont_database;

private static class ContHelper extends SQLiteOpenHelper {

SQLiteDatabase database;
Context _context;

public ContHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
_context = context;
DATABASE_PATH = context.getApplicationInfo().dataDir + "/databases/";
openDataBase();
}

public SQLiteDatabase openDataBase() throws SQLException {
Log.i(this.getClass().toString(), "Opening!!!!!!");
String path = DATABASE_PATH + DATABASE_NAME;
if (database == null) {
createDataBase();
database = SQLiteDatabase.openDatabase(path, null,
SQLiteDatabase.OPEN_READWRITE);
}
return database;
}

public void createDataBase() {
Log.i(this.getClass().toString(), "Creating!!!!!!");
boolean dbExist = checkDataBase();
if (!dbExist) {
this.getReadableDatabase();
try {
copyDataBase();
} catch (IOException e) {
Log.i(this.getClass().toString(), "Copying error");
}
} else {
Log.i(this.getClass().toString(), "Database already exists");
}
}

private boolean checkDataBase() {
Log.i(this.getClass().toString(), "Checking!!!!!!");
SQLiteDatabase checkDb = null;
try {
String path = DATABASE_PATH + DATABASE_NAME;
checkDb = SQLiteDatabase.openDatabase(path, null,
SQLiteDatabase.OPEN_READONLY);
} catch (SQLException e) {
Log.i(this.getClass().toString(), "Error while checking db");
}
if (checkDb != null) {
checkDb.close();
}
return checkDb != null;
}

private void copyDataBase() throws IOException {
Log.i(this.getClass().toString(), "Copying!!!!!!");
InputStream externalDbStream = _context.getAssets().open("databases/" + DATABASE_NAME);
String outFileName = DATABASE_PATH + DATABASE_NAME;
OutputStream localDbStream = new FileOutputStream(outFileName);
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = externalDbStream.read(buffer)) > 0) {
localDbStream.write(buffer, 0, bytesRead);
}
localDbStream.close();
externalDbStream.close();
}

@Override
public synchronized void close() {
if (database != null) {
database.close();
}
super.close();
}

@Override
public void onCreate(SQLiteDatabase db) {
}

@Override
public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {
}

}

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

public MyDatabase open() throws SQLException {
contenting = new ContHelper(context);
cont_database = contenting.openDataBase();
return this;
}

public void close() {
contenting.close();
}

public ArrayList<Wonders> reddAllWonder() {
ArrayList<Wonders> wonders = new ArrayList<>();
String[] columns = new String[]{"*"};

Cursor c = cont_database.query(DATABASE_TABLE, columns, null, null,
null, null, null);

if (c != null && c.moveToFirst()) {
int idIndex = 0;
int nameIndex = 1;
int cityIndex = 2;
int textIndex = 3;
int favIndex = 4;

do {
Wonders wonder = new Wonders();
wonder.setId(c.getInt(idIndex));
wonder.setName(c.getString(nameIndex));
wonder.setCity(c.getString(cityIndex));
wonder.setText(c.getString(textIndex));
wonder.setFav(c.getInt(favIndex));
wonders.add(wonder);
} while (c.moveToNext());
}

return wonders;
}

public Wonders getKhatereh(int id) {
Wonders wonder = new Wonders();
String[] columns = new String[]{"*"};
String shart = COL_ID + "=?";
String[] shartVal = new String[]{String.valueOf(id)};
Cursor c = cont_database.query(DATABASE_TABLE, columns, shart, shartVal, null, null, null);

int iId = c.getColumnIndex(COL_ID);
int iTitle = c.getColumnIndex(COL_Name);
int isubTitle = c.getColumnIndex(COL_City);
int isubText = c.getColumnIndex(COL_Text);
int isubFav = c.getColumnIndex(COL_Favorites);

if (c.moveToFirst()) {
wonder.setId(c.getInt(iId));
wonder.setName(c.getString(iTitle));
wonder.setCity(c.getString(isubTitle));
wonder.setText(c.getString(isubText));
wonder.setFav(c.getInt(isubFav));
}

return wonder;
}

public ArrayList<Wonders> getFaves() {
ArrayList<Wonders> wonders = new ArrayList<>();
String[] columns = new String[]{COL_ID, COL_Name, COL_City};
String shart = COL_Favorites + "=?";
String[] shartVal = new String[]{String.valueOf(1)};
Cursor c = cont_database.query(DATABASE_TABLE, columns, shart, shartVal, null, null, null);

int iId = c.getColumnIndex(COL_ID);
int iTitle = c.getColumnIndex(COL_Name);
int isubTitle = c.getColumnIndex(COL_City);

for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
Wonders wonder = new Wonders();
wonder.setId(c.getInt(iId));
wonder.setName(c.getString(iTitle));
wonder.setCity(c.getString(isubTitle));
wonders.add(wonder);
}

return wonders;
}


}




واینم کد اکتیویتی

package com.example.zahra.project_jahad;

import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.AsyncTask;
import android.support.annotation.LayoutRes;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManag er;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;

import com.example.zahra.project_jahad.Helper.MyDatabase;
import com.example.zahra.project_jahad.Helper.Wonders;
import com.squareup.picasso.Picasso;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {
MyDatabase db;
RecyclerView recycler1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recycler1 = (RecyclerView) findViewById(R.id.recycler1);
new loadTitles().execute();

}

private class loadTitles extends AsyncTask<Void, Void, Void> {

ArrayList<Wonders> wonders;
ProgressBar pb;

@Override
protected void onPreExecute() {
super.onPreExecute();
pb = (ProgressBar) findViewById(R.id.progressBar);
pb.setVisibility(View.VISIBLE);
}

@Override
protected Void doInBackground(Void... voids) {
db = new MyDatabase(MainActivity.this);
db.open();
wonders = db.reddAllWonder();
db.close();
return null;
}

@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
pb.setVisibility(View.INVISIBLE);
// recyceler.setOnItemClickListener(MainActivity.this );
AllWondersAdapter adapter = new AllWondersAdapter(wonders);

StaggeredGridLayoutManager sglm = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.HORIZONTAL);
recycler1.setLayoutManager(sglm);

recycler1.setAdapter(adapter);
pb.setVisibility(View.GONE);
}
}
private class AllWondersAdapter extends RecyclerView.Adapter<AllWondersAdapter.ViewHolder1> {

List<Wonders> items;

AllWondersAdapter(List<Wonders> objects) {
items = objects;
}

@Override
public ViewHolder1 onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater layoutInflater = LayoutInflater.from(MainActivity.this);
View v = layoutInflater.inflate(R.layout.itemwonder, parent, false);
return new ViewHolder1(v);
}

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

@Override
public void onBindViewHolder(ViewHolder1 holder, int position) {
final int pos = position;
Wonders wonder = items.get(position);
holder.name.setText(wonder.getName());
holder.city.setText(wonder.getCity());
Picasso.with(MainActivity.this).load(wonder.getImg ()).into(holder.img);
holder.cardview1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, MainActivity.class);
Wonders wonder = items.get(pos);
intent.putExtra("id", wonder.getId());
startActivity(intent);
}
});
}

class ViewHolder1 extends RecyclerView.ViewHolder {

TextView name, city;
ImageView img;
CardView cardview1;

ViewHolder1(View itemView) {
super(itemView);
name = (TextView) itemView.findViewById(R.id.name);
city = (TextView) itemView.findViewById(R.id.city);
img = (ImageView) itemView.findViewById(R.id.img);
cardview1 = (CardView) itemView.findViewById(R.id.cardview1);
}
}

}




}



عکس ارر:

http://uupload.ir/files/k0fr_untitled.png

zahra313
دوشنبه 22 آبان 1396, 10:29 صبح
کسی نتونست کمکم کنه؟؟