Android 我的应用在联机时工作正常,但在脱机时不工作帮助我
我想使我的应用程序脱机。当我将数据从url插入数据库时,如果internet可用,它可以正常工作,但当internet不可用时,我的应用程序在gridview中不显示任何内容。我的应用程序有什么问题请帮助我为什么gridview不从数据库加载数据帮助我Android 我的应用在联机时工作正常,但在脱机时不工作帮助我,android,gridview,android-sqlite,Android,Gridview,Android Sqlite,我想使我的应用程序脱机。当我将数据从url插入数据库时,如果internet可用,它可以正常工作,但当internet不可用时,我的应用程序在gridview中不显示任何内容。我的应用程序有什么问题请帮助我为什么gridview不从数据库加载数据帮助我 public class MainActivity extends Activity { CategoryListAdapter3 cla; static ArrayList<String> Catego
public class MainActivity extends Activity {
CategoryListAdapter3 cla;
static ArrayList<String> Category_ID = new ArrayList<String>();
static ArrayList<String> Category_name = new ArrayList<String>();
static ArrayList<String> Category_image = new ArrayList<String>();
String URL, URL2;
String SelectMenuAPI;
String _response;
String status;
GridView gridview;
private DbHelper mHelper;
private SQLiteDatabase dataBase;
private boolean isUpdate;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mHelper=new DbHelper(this);
dataBase=mHelper.getWritableDatabase();
gridview = (GridView) findViewById(R.id.gridview);
cla = new CategoryListAdapter3(MainActivity.this);
new TheTask().execute();
gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1,
int position, long arg3) {
// TODO Auto-generated method stub
Intent iMenuList = new Intent(MainActivity.this,
Subcategory.class);
iMenuList.putExtra("Category_ID", Category_ID.get(position));
iMenuList.putExtra("Category_name", Category_name.get(position));
startActivity(iMenuList);
}
});
}
void clearData() {
Category_ID.clear();
Category_name.clear();
Category_image.clear();
}
public class TheTask extends AsyncTask<Void, String, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected String doInBackground(Void... arg0) {
SelectMenuAPI = "http://www.fff/mobile_api.php?response=getmaincategories";
clearData();
URL = SelectMenuAPI;
URL2 = URL.replace(" ", "%20");
try {
Log.i("url", "" + URL2);
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet(URL2);
HttpResponse response = client.execute(request);
HttpEntity resEntity = response.getEntity();
_response = EntityUtils.toString(resEntity);
} catch (Exception e) {
e.printStackTrace();
}
return _response;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
try {
JSONObject json2 = new JSONObject(result);
status = json2.getString("Status");
if (status.equals("1")) {
JSONArray school2 = json2.getJSONArray("data");
//
for (int i = 0; i < school2.length(); i++) {
JSONObject object = school2.getJSONObject(i);
String id = object.getString("category_id");
String name =object.getString("name");
String image_path = object.getString("image_path");
dataBase=mHelper.getWritableDatabase();
ContentValues values=new ContentValues();
values.put(DbHelper.KEY_MYID,id);
values.put(DbHelper.KEY_FNAME,name);
values.put(DbHelper.KEY_LNAME,image_path );
System.out.println("");
if(isUpdate)
{
//update database with new data
dataBase.update(DbHelper.TABLE_NAME, values, DbHelper.KEY_ID+"="+id, null);
}
else
{
//insert data into database
dataBase.insert(DbHelper.TABLE_NAME, null, values);
}
//close database
dataBase.close();
}
}
else {
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
displayData();
}
}
private void displayData() {
dataBase = mHelper.getWritableDatabase();
Cursor mCursor = dataBase.rawQuery("SELECT * FROM "
+ DbHelper.TABLE_NAME, null);
//
// Category_ID.clear();
// Category_name.clear();
// Category_image.clear();
if (mCursor.moveToFirst()) {
do {
Category_ID.add(mCursor.getString(mCursor.getColumnIndex(DbHelper.KEY_ID)));
Category_name.add(mCursor.getString(mCursor.getColumnIndex(DbHelper.KEY_FNAME)));
Category_image.add(mCursor.getString(mCursor.getColumnIndex(DbHelper.KEY_LNAME)));
} while (mCursor.moveToNext());
}
gridview.setAdapter(cla);
mCursor.close();
}
public class DbHelper extends SQLiteOpenHelper {
static String DATABASE_NAME="userdata";
public static final String TABLE_NAME="user";
public static final String KEY_FNAME="fname";
public static final String KEY_LNAME="lname";
public static final String KEY_ID="id";
public static final String KEY_MYID="myid";
public DbHelper(Context context) {
super(context, DATABASE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_TABLE="CREATE TABLE "+TABLE_NAME+" ("+KEY_ID+" INTEGER PRIMARY
KEY,"+KEY_MYID+" TEXT, "+KEY_FNAME+" TEXT, "+KEY_LNAME+" BLOB)";
db.execSQL(CREATE_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS "+TABLE_NAME);
onCreate(db);
}
}
public class CategoryListAdapter3 extends BaseAdapter {
private Activity activity;
private AQuery androidAQuery;
public CategoryListAdapter3(Activity act) {
this.activity = act;
// imageLoader = new ImageLoader(act);
}
public int getCount() {
// TODO Auto-generated method stub
return MainActivity.Category_ID.size();
}
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder holder;
androidAQuery = new AQuery(getcontext());
if(convertView == null){
LayoutInflater inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.viewitem2, null);
holder = new ViewHolder();
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
holder.txtText = (TextView) convertView.findViewById(R.id.title2);
holder.imgThumb = (ImageView) convertView.findViewById(R.id.image2);
holder.txtText.setText(MainActivity.Category_name.get(position));
a
ndroidAQuery.id(holder.imgThumb).image(MainActivity.Category_image.get(position), true,
true);
return convertView;
}
private Activity getcontext() {
// TODO Auto-generated method stub
return null;
}
static class ViewHolder {
TextView txtText;
ImageView imgThumb;
}
公共类MainActivity扩展活动{
3-共轭亚基;
静态ArrayList Category_ID=新ArrayList();
静态ArrayList Category_name=新ArrayList();
静态ArrayList Category_image=新ArrayList();
字符串URL,URL2;
字符串SelectMenuAPI;
字符串响应;
字符串状态;
GridView;
私人家庭佣工;
专用数据库;
私有布尔更新;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mHelper=新的DbHelper(this);
dataBase=mHelper.getWritableDatabase();
gridview=(gridview)findViewById(R.id.gridview);
cla=新的CategoryListAdapter3(MainActivity.this);
新建任务().execute();
setOnItemClickListener(新的OnItemClickListener(){
公共链接(AdapterView arg0、视图arg1、,
整数位置,长arg3){
//TODO自动生成的方法存根
Intent iMenuList=新Intent(MainActivity.this,
子类别(类别);
iMenuList.putExtra(“Category_ID”,Category_ID.get(position));
putExtra(“Category_name”,Category_name.get(position));
起始触觉(iMenuList);
}
});
}
void clearData(){
类别_ID.clear();
类别名称。清除();
Category_image.clear();
}
公共类任务扩展异步任务{
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
}
@凌驾
受保护的字符串doInBackground(无效…arg0){
选择菜单UAPI=”http://www.fff/mobile_api.php?response=getmaincategories";
clearData();
URL=选择菜单UAPI;
URL2=URL.replace(“,“%20”);
试一试{
Log.i(“url”和“+URL2”);
HttpClient=new DefaultHttpClient();
HttpGet请求=新的HttpGet(URL2);
HttpResponse response=client.execute(请求);
HttpEntity当前性=response.getEntity();
_response=EntityUtils.toString(resEntity);
}捕获(例外e){
e、 printStackTrace();
}
返回响应;
}
@凌驾
受保护的void onPostExecute(字符串结果){
super.onPostExecute(结果);
试一试{
JSONObject json2=新的JSONObject(结果);
status=json2.getString(“status”);
如果(状态等于(“1”)){
JSONArray school2=json2.getJSONArray(“数据”);
//
for(int i=0;i<2.length();i++){
JSONObject object=school2.getJSONObject(i);
String id=object.getString(“category_id”);
字符串名称=object.getString(“名称”);
String image_path=object.getString(“image_path”);
dataBase=mHelper.getWritableDatabase();
ContentValues=新的ContentValues();
value.put(DbHelper.KEY\u MYID,id);
value.put(DbHelper.KEY\u FNAME,name);
value.put(DbHelper.KEY\u LNAME,image\u path);
System.out.println(“”);
如果(isUpdate)
{
//用新数据更新数据库
dataBase.update(DbHelper.TABLE_名称、值、DbHelper.KEY_ID+“=”+ID,null);
}
其他的
{
//将数据插入数据库
insert(DbHelper.TABLE_NAME,null,value);
}
//关闭数据库
close()数据库;
}
}
否则{
}
}捕获(JSONException e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
显示数据();
}
}
私有void displayData(){
dataBase=mHelper.getWritableDatabase();
游标mCursor=dataBase.rawQuery(“选择*FROM”
+DbHelper.TABLE_名称,null);
//
//类别_ID.clear();
//类别名称。清除();
//Category_image.clear();
if(mCursor.moveToFirst()){
做{
Category_ID.add(mCursor.getString(mCursor.getColumnIndex(DbHelper.KEY_ID));
Category_name.add(mCursor.getString(mCursor.getColumnIndex(DbHelper.KEY_FNAME));
Category_image.add(mCursor.getString(mCursor.getColumnIndex(DbHelper.KEY_LNAME));
}while(mCursor.moveToNext());
}
setAdapter(cla);
mCursor.close();
}
公共类DbHelper扩展了SQLiteOpenHelper{
静态字符串数据库\u NAME=“userdata”;
公共静态最终字符串表\u NAME=“user”;
公共静态最终字符串键\u FNAME=“FNAME”;
公共静态最终字符串键\u LNAME=“LNAME”;
公共静态最终字符串键\u ID=“ID”;
公共静态最终字符串键\u MYID=“MYID”;
公共DbHelper(上下文){
super(上下文,数据库名称,null,1);
}
@凌驾
public void onCreate(SQLiteDatabase db){
字符串CREATE_TABLE=“CREATE TABLE”+TABLE_NAME+”(“+KEY_ID+”整数主
键,“+KEY_MYID+”文本,“+KEY_FNAME+”文本,“+KEY_LNAME+”BLOB)”;
db.execSQL(创建_表);
}
@凌驾
public void onUpgrade(SQLiteDatabase db,int-oldVersion,int-newVersion){
db.execSQL(“如果存在删除表”+表名称);
onCreate(db);
}
}
公共类CategoryStatAdapter3扩展了BaseAdapter{
私人活动;
私用水渠;
公共类别StatAdapter3(活动法){
这个活动=行动;
//imageLoader=新的imageLoader(act
public static boolean isInternetAvailable(Context context) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnectedOrConnecting()) {
return true;
}
return false;
}