PDA

View Full Version : نحوه آپدیت یک لیست ویو درون خود BaseAdapter



meysam jahedi
جمعه 16 آبان 1393, 19:45 عصر
سلام

لیست ویو مربوط به لیست علاقه مندی هام در دیتابیس با فیلد fav ست میشه



public void refresh2(){
mydb=mydata.getReadableDatabase();
Cursor cu=mydb.rawQuery("select * from tbl where fav='1'",null);
NAME=new String[cu.getCount()];
FAV=new String[cu.getCount()];
if(cu.moveToFirst()){
do{
NAME[i]=cu.getString(1);
FAV[i]=cu.getString(2);
i++;
}
while(cu.moveToNext());
}
cu.close();
mydb.close();

setListAdapter(new MyAdapter2(this, NAME));
}



public class MyAdapter2 extends BaseAdapter {
Activity a;

String[] N;


private mydatabase mydata;
private SQLiteDatabase mydb;
public MyAdapter2 (Activity act,String[] name){
a=act;
this.N=name;

this.mydata = new mydatabase(act.getApplicationContext());
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return N.length;
}

@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}

@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}


@Override
public View getView(final int pos, View convertView, ViewGroup arg2) {

View mylist;
LayoutInflater inflater = (LayoutInflater) a.getSystemService(Context.LAYOUT_INFLATER_SERVICE );
if (convertView == null) {
mylist = new View(a);

mylist = inflater.inflate(R.layout.row_listfav, null);

TextView textView1 = (TextView) mylist.findViewById(R.id.row_listfav_name);
final ImageView img=(ImageView) mylist.findViewById(R.id.row_listfav_img);


textView1.setText(N[pos]);

img.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {

mydb=mydata.getWritableDatabase();
mydb.execSQL("UPDATE tbl SET fav='0' WHERE name='"+N[pos]+"'");
mydb.close();

}
});


} else {
mylist = convertView;
}
return mylist;
}



تا اینجا هیچ مشکلی نداره ، اما چطور میتونم در قسمت :
img.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {

mydb=mydata.getWritableDatabase();
mydb.execSQL("UPDATE tbl SET fav='0' WHERE name='"+N[pos]+"'");
mydb.close();

}
});
بعد از آپدیت دیتابیس ، خود لیست ویو رو هم همزمان بروز کنم؟

meysam jahedi
جمعه 16 آبان 1393, 21:51 عصر
هیچکس هیچ تمایلی به راهنمایی نداره؟:گریه:

virus2009
جمعه 16 آبان 1393, 23:24 عصر
شما یک نمونه از کلاس آداپترت به صورت field به نام مثلا mAdapter بساز ( جایی که NAME تعریف شده ) داخل oncreate بهش مقدار بده ( همون new MyAdapter )
بعد از اینکه دیتابیس رو آپدیت کردی Name رو توسط یک متد آپدیت کن بعد این کد رو داخل همون onclick صدا بزن :

mAdapter.notifyDataSetChanged();

meysam jahedi
شنبه 17 آبان 1393, 00:18 صبح
شما یک نمونه از کلاس آداپترت به صورت field به نام مثلا mAdapter بساز ( جایی که NAME تعریف شده ) داخل oncreate بهش مقدار بده ( همون new MyAdapter )
بعد از اینکه دیتابیس رو آپدیت کردی Name رو توسط یک متد آپدیت کن بعد این کد رو داخل همون onclick صدا بزن :

mAdapter.notifyDataSetChanged();

یعنی اینجا باید چکار کرد ؟

package com.meysam.fav;


import android.app.ListActivity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.widget.ListView;

public class Fav extends ListActivity{
private String[]NAME;
private String[]FAV;
private mydatabase mydata;
private SQLiteDatabase mydb;
private ListView list;
private MyAdapter2 adapter;
int i;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fav);
mydata=new mydatabase(this);
refresh2();
}

public void refresh2(){
mydb=mydata.getReadableDatabase();
Cursor cu=mydb.rawQuery("select * from tbl where fav='1'",null);
NAME=new String[cu.getCount()];
FAV=new String[cu.getCount()];
if(cu.moveToFirst()){
do{
NAME[i]=cu.getString(1);
FAV[i]=cu.getString(2);
i++;
}
while(cu.moveToNext());
}
cu.close();
mydb.close();

setListAdapter(new MyAdapter2(this, NAME));
}

}



package com.meysam.fav;

import android.app.Activity;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class MyAdapter2 extends BaseAdapter {
Activity a;

String[] N;


private mydatabase mydata;
private SQLiteDatabase mydb;
public MyAdapter2 (Activity act,String[] name){
a=act;
this.N=name;

this.mydata = new mydatabase(act.getApplicationContext());
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return N.length;
}

@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}

@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}


@Override
public View getView(final int pos, View convertView, ViewGroup arg2) {

View mylist;
LayoutInflater inflater = (LayoutInflater) a.getSystemService(Context.LAYOUT_INFLATER_SERVICE );
if (convertView == null) {
mylist = new View(a);

mylist = inflater.inflate(R.layout.row_listfav, null);

TextView textView1 = (TextView) mylist.findViewById(R.id.row_listfav_name);
final ImageView img=(ImageView) mylist.findViewById(R.id.row_listfav_img);


textView1.setText(N[pos]);

img.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {

mydb=mydata.getWritableDatabase();
mydb.execSQL("UPDATE tbl SET fav='0' WHERE name='"+N[pos]+"'");
mydb.close();

}
});


} else {
mylist = convertView;
}
return mylist;
}


}

virus2009
شنبه 17 آبان 1393, 00:33 صبح
یعنی اینجا باید چکار کرد ؟


package com.meysam.fav;


import android.app.ListActivity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.widget.ListView;

public class Fav extends ListActivity{
private String[]NAME;
private String[]FAV;
private mydatabase mydata;
private SQLiteDatabase mydb;
private ListView list;
private MyAdapter2 adapter;
int i;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fav);
mydata=new mydatabase(this);
refresh2();
adapter = new MyAdapter2(this, NAME)
setListAdapter(adapter);
}

public void refresh2(){
mydb=mydata.getReadableDatabase();
Cursor cu=mydb.rawQuery("select * from tbl where fav='1'",null);
NAME=new String[cu.getCount()];
FAV=new String[cu.getCount()];
if(cu.moveToFirst()){
do{
NAME[i]=cu.getString(1);
FAV[i]=cu.getString(2);
i++;
}
while(cu.moveToNext());
}
cu.close();
mydb.close();

setListAdapter(new MyAdapter2(this, NAME));
}

}



package com.meysam.fav;

import android.app.Activity;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class MyAdapter2 extends BaseAdapter {
Activity a;

String[] N;


private mydatabase mydata;
private SQLiteDatabase mydb;
public MyAdapter2 (Activity act,String[] name){
a=act;
this.N=name;

this.mydata = new mydatabase(act.getApplicationContext());
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return N.length;
}

@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}

@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}


@Override
public View getView(final int pos, View convertView, ViewGroup arg2) {

View mylist;
LayoutInflater inflater = (LayoutInflater) a.getSystemService(Context.LAYOUT_INFLATER_SERVICE );
if (convertView == null) {
mylist = new View(a);

mylist = inflater.inflate(R.layout.row_listfav, null);

TextView textView1 = (TextView) mylist.findViewById(R.id.row_listfav_name);
final ImageView img=(ImageView) mylist.findViewById(R.id.row_listfav_img);


textView1.setText(N[pos]);

img.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {

mydb=mydata.getWritableDatabase();
mydb.execSQL("UPDATE tbl SET fav='0' WHERE name='"+N[pos]+"'");
mydb.close();
refresh2();
adapter.notifyDataSetChanged();
}
});


} else {
mylist = convertView;
}
return mylist;
}


}




قرمز ها رو پاک کنید
سبز ها رو اضافه کنید

meysam jahedi
شنبه 17 آبان 1393, 15:25 عصر
به این صورت نوشتم

اما ارور زیر رو داد
package com.meysam.fav;


import android.app.ListActivity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.widget.ListView;

public class Fav extends ListActivity{
private String[]NAME;
private String[]FAV;
private mydatabase mydata;
private SQLiteDatabase mydb;
private ListView list;
MyAdapter2 adapter;
int i;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fav);
mydata=new mydatabase(this);
refresh2();
}

public void refresh2(){
mydb=mydata.getReadableDatabase();
Cursor cu=mydb.rawQuery("select * from tbl where fav='1'",null);
NAME=new String[cu.getCount()];
FAV=new String[cu.getCount()];
if(cu.moveToFirst()){
do{
NAME[i]=cu.getString(1);
FAV[i]=cu.getString(2);
i++;
}
while(cu.moveToNext());
}
cu.close();
mydb.close();

//setListAdapter(new MyAdapter2(this, NAME));
adapter = new MyAdapter2(this, NAME);
setListAdapter(adapter);
}

}



package com.meysam.fav;

import android.app.Activity;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class MyAdapter2 extends BaseAdapter {
private Fav fav;

Activity a;

String[] N;


private mydatabase mydata;
private SQLiteDatabase mydb;
public MyAdapter2 (Activity act,String[] name){
a=act;
this.N=name;

this.mydata = new mydatabase(act.getApplicationContext());
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return N.length;
}

@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}

@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}


@Override
public View getView(final int pos, View convertView, ViewGroup arg2) {

View mylist;
LayoutInflater inflater = (LayoutInflater) a.getSystemService(Context.LAYOUT_INFLATER_SERVICE );
if (convertView == null) {
mylist = new View(a);

mylist = inflater.inflate(R.layout.row_listfav, null);

TextView textView1 = (TextView) mylist.findViewById(R.id.row_listfav_name);
final ImageView img=(ImageView) mylist.findViewById(R.id.row_listfav_img);


textView1.setText(N[pos]);

img.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {

mydb=mydata.getWritableDatabase();
mydb.execSQL("UPDATE tbl SET fav='0' WHERE name='"+N[pos]+"'");
mydb.close();
fav.refresh2();
fav.adapter.notifyDataSetChanged();
}
});


} else {
mylist = convertView;
}
return mylist;
}


}



11-08 11:29:29.131: E/AndroidRuntime(1872): FATAL EXCEPTION: main
11-08 11:29:29.131: E/AndroidRuntime(1872): java.lang.NullPointerException
11-08 11:29:29.131: E/AndroidRuntime(1872): at com.meysam.fav.MyAdapter2$1.onClick(MyAdapter2.jav a:72)
11-08 11:29:29.131: E/AndroidRuntime(1872): at android.view.View.performClick(View.java:3511)
11-08 11:29:29.131: E/AndroidRuntime(1872): at android.view.View$PerformClick.run(View.java:14105 )
11-08 11:29:29.131: E/AndroidRuntime(1872): at android.os.Handler.handleCallback(Handler.java:605 )
11-08 11:29:29.131: E/AndroidRuntime(1872): at android.os.Handler.dispatchMessage(Handler.java:92 )
11-08 11:29:29.131: E/AndroidRuntime(1872): at android.os.Looper.loop(Looper.java:137)
11-08 11:29:29.131: E/AndroidRuntime(1872): at android.app.ActivityThread.main(ActivityThread.jav a:4424)
11-08 11:29:29.131: E/AndroidRuntime(1872): at java.lang.reflect.Method.invokeNative(Native Method)
11-08 11:29:29.131: E/AndroidRuntime(1872): at java.lang.reflect.Method.invoke(Method.java:511)
11-08 11:29:29.131: E/AndroidRuntime(1872): at com.android.internal.os.ZygoteInit$MethodAndArgsCa ller.run(ZygoteInit.java:784)
11-08 11:29:29.131: E/AndroidRuntime(1872): at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:551)
11-08 11:29:29.131: E/AndroidRuntime(1872): at dalvik.system.NativeStart.main(Native Method)

virus2009
شنبه 17 آبان 1393, 16:09 عصر
به این صورت قرار بدید :

package com.meysam.fav;


import android.app.ListActivity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.widget.ListView;

public class Fav extends ListActivity{
private String[]NAME;
private String[]FAV;
private mydatabase mydata;
private SQLiteDatabase mydb;
private ListView list;
MyAdapter2 adapter;
int i;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fav);
mydata=new mydatabase(this);
refresh2();
adapter = new MyAdapter2(this, NAME);
setListAdapter(adapter);
}

public void refresh2(){
mydb=mydata.getReadableDatabase();
Cursor cu=mydb.rawQuery("select * from tbl where fav='1'",null);
NAME=new String[cu.getCount()];
FAV=new String[cu.getCount()];
if(cu.moveToFirst()){
do{
NAME[i]=cu.getString(1);
FAV[i]=cu.getString(2);
i++;
}
while(cu.moveToNext());
}
cu.close();
mydb.close();

}

}


package com.meysam.fav;

import android.app.Activity;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class MyAdapter2 extends BaseAdapter {
private Fav fav;

Activity a;

String[] N;


private mydatabase mydata;
private SQLiteDatabase mydb;
public MyAdapter2 (Activity act,String[] name){
a=act;
this.N=name;

this.mydata = new mydatabase(act.getApplicationContext());
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return N.length;
}

@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}

@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}


@Override
public View getView(final int pos, View convertView, ViewGroup arg2) {

View mylist;
LayoutInflater inflater = (LayoutInflater) a.getSystemService(Context.LAYOUT_INFLATER_SERVICE );
if (convertView == null) {
mylist = new View(a);

mylist = inflater.inflate(R.layout.row_listfav, null);

TextView textView1 = (TextView) mylist.findViewById(R.id.row_listfav_name);
final ImageView img=(ImageView) mylist.findViewById(R.id.row_listfav_img);


textView1.setText(N[pos]);

img.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {

mydb=mydata.getWritableDatabase();
mydb.execSQL("UPDATE tbl SET fav='0' WHERE name='"+N[pos]+"'");
mydb.close();
a.refresh2();
notifyDataSetChanged();
}
});


} else {
mylist = convertView;
}
return mylist;
}


}

meysam jahedi
شنبه 17 آبان 1393, 23:53 عصر
به صورت
a.refresh2();
قبول نمیکنه ، یه private از کلاس که refresh2 توش هست رو همین قسمت تعریف کردم
private Fav fav;
و بعدش به صورت
((Fav) a).refresh2();
notifyDataSetChanged();


نوشتم ، بازم نشد و کلی ارور :

11-08 19:56:14.640: E/dalvikvm(1598): Unable to open stack trace file '/data/anr/traces.txt': Is a directory
11-08 19:56:15.220: E/dalvikvm(1598): Unable to open stack trace file '/data/anr/traces.txt': Is a directory
11-08 19:56:34.810: E/dalvikvm(1598): Unable to open stack trace file '/data/anr/traces.txt': Is a directory
11-08 19:56:34.890: E/AndroidRuntime(1598): FATAL EXCEPTION: main
11-08 19:56:34.890: E/AndroidRuntime(1598): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.meysam.fav/com.meysam.fav.Fav}: java.lang.NullPointerException
11-08 19:56:34.890: E/AndroidRuntime(1598): at android.app.ActivityThread.performLaunchActivity(A ctivityThread.java:1956)
11-08 19:56:34.890: E/AndroidRuntime(1598): at android.app.ActivityThread.handleLaunchActivity(Ac tivityThread.java:1981)
11-08 19:56:34.890: E/AndroidRuntime(1598): at android.app.ActivityThread.access$600(ActivityThre ad.java:123)
11-08 19:56:34.890: E/AndroidRuntime(1598): at android.app.ActivityThread$H.handleMessage(Activit yThread.java:1147)
11-08 19:56:34.890: E/AndroidRuntime(1598): at android.os.Handler.dispatchMessage(Handler.java:99 )
11-08 19:56:34.890: E/AndroidRuntime(1598): at android.os.Looper.loop(Looper.java:137)
11-08 19:56:34.890: E/AndroidRuntime(1598): at android.app.ActivityThread.main(ActivityThread.jav a:4424)
11-08 19:56:34.890: E/AndroidRuntime(1598): at java.lang.reflect.Method.invokeNative(Native Method)
11-08 19:56:34.890: E/AndroidRuntime(1598): at java.lang.reflect.Method.invoke(Method.java:511)
11-08 19:56:34.890: E/AndroidRuntime(1598): at com.android.internal.os.ZygoteInit$MethodAndArgsCa ller.run(ZygoteInit.java:784)
11-08 19:56:34.890: E/AndroidRuntime(1598): at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:551)
11-08 19:56:34.890: E/AndroidRuntime(1598): at dalvik.system.NativeStart.main(Native Method)
11-08 19:56:34.890: E/AndroidRuntime(1598): Caused by: java.lang.NullPointerException
11-08 19:56:34.890: E/AndroidRuntime(1598): at com.meysam.fav.MyAdapter2.getCount(MyAdapter2.java :33)
11-08 19:56:34.890: E/AndroidRuntime(1598): at android.widget.ListView.setAdapter(ListView.java:4 60)
11-08 19:56:34.890: E/AndroidRuntime(1598): at android.app.ListActivity.setListAdapter(ListActivi ty.java:265)
11-08 19:56:34.890: E/AndroidRuntime(1598): at com.meysam.fav.Fav.onCreate(Fav.java:23)
11-08 19:56:34.890: E/AndroidRuntime(1598): at android.app.Activity.performCreate(Activity.java:4 465)
11-08 19:56:34.890: E/AndroidRuntime(1598): at android.app.Instrumentation.callActivityOnCreate(I nstrumentation.java:1049)
11-08 19:56:34.890: E/AndroidRuntime(1598): at android.app.ActivityThread.performLaunchActivity(A ctivityThread.java:1920)
11-08 19:56:34.890: E/AndroidRuntime(1598): ... 11 more


کلافم کرده ، هرکاری میکنم نمیشه

aebrs@yahoo.com
یک شنبه 18 آبان 1393, 09:55 صبح
تا آنجا که من کد را دیدم شما در نقطه کلیک محتوای fav را مشخصا می دانید چه چیزی هست و آنرا صفر می کنید : SET fav='0'
البیته شاید اشتباه می کنم و کد را درست نفهمیدم اما اگر درست فهمیده باشم سناریو را اینطور تعریف کنید:
1- دیتا بیس را به مقداری که می دانید چیست به روزرسانی کنید (SET fav='0')
2- الان می دانیم محتوای فیلد صفر شده (مثلا فالس شده است ) و باید کلید تغییر کند مثلا فونت قرمز شودهمین جا آنرا تغییر دهید
برای دسترسی به کلید هم از این کد استفاده کنید
Button btn = (Button)arg0;

حالا کلید را دارید و می تواند آنرا تغییر دهید
البته شاید من کلا اشتباه کرده باشم. فقط خواستم کمک کنم
موفق باشید

meysam jahedi
یک شنبه 18 آبان 1393, 10:46 صبح
- الان می دانیم محتوای فیلد صفر شده (مثلا فالس شده است ) و باید کلید تغییر کند مثلا فونت قرمز شودهمین جا آنرا تغییر دهید
برای دسترسی به کلید هم از این کد استفاده کنید
Button btn = (Button)arg0;

حالا کلید را دارید و می تواند آنرا تغییر دهید

میخوام همونطور که با MyAdapter2 لیست ویو رو از دیتابیس بروز میکنم ، درون خودش در دکمه fav پس از update هم سریع لیست ویو بروز بشه (با آپدیت fav=0 یعنی از لیست ویو حذف بشه)


البته شاید من کلا اشتباه کرده باشم. فقط خواستم کمک کنم
موفق باشید
بله
مرسی

meysam jahedi
یک شنبه 18 آبان 1393, 14:10 عصر
کسی نظری نداره

virus2009
یک شنبه 18 آبان 1393, 14:21 عصر
اینو امتحان کنید :

package com.meysam.fav;

import android.app.Activity;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class MyAdapter2 extends BaseAdapter {
private Fav fav;

ListActivity a;

String[] N;


private mydatabase mydata;
private SQLiteDatabase mydb;
public MyAdapter2 (ListActivity act,String[] name){
a=act;
this.N=name;

this.mydata = new mydatabase(act.getApplicationContext());
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return N.length;
}

@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}

@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}


@Override
public View getView(final int pos, View convertView, ViewGroup arg2) {

View mylist;
LayoutInflater inflater = (LayoutInflater) a.getSystemService(Context.LAYOUT_INFLATER_SERVICE );
if (convertView == null) {
mylist = new View(a);

mylist = inflater.inflate(R.layout.row_listfav, null);

TextView textView1 = (TextView) mylist.findViewById(R.id.row_listfav_name);
final ImageView img=(ImageView) mylist.findViewById(R.id.row_listfav_img);


textView1.setText(N[pos]);

img.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {

mydb=mydata.getWritableDatabase();
mydb.execSQL("UPDATE tbl SET fav='0' WHERE name='"+N[pos]+"'");
mydb.close();
a.refresh2();
notifyDataSetChanged();
}
});


} else {
mylist = convertView;
}
return mylist;
}


}

بقیه هم مانند پست قبلی

meysam jahedi
یک شنبه 18 آبان 1393, 14:44 عصر
اینو امتحان کنید :

package com.meysam.fav;

import android.app.Activity;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class MyAdapter2 extends BaseAdapter {
private Fav fav;

ListActivity a;

String[] N;


private mydatabase mydata;
private SQLiteDatabase mydb;
public MyAdapter2 (ListActivity act,String[] name){
a=act;
this.N=name;

this.mydata = new mydatabase(act.getApplicationContext());
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return N.length;
}

@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}

@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}


@Override
public View getView(final int pos, View convertView, ViewGroup arg2) {

View mylist;
LayoutInflater inflater = (LayoutInflater) a.getSystemService(Context.LAYOUT_INFLATER_SERVICE );
if (convertView == null) {
mylist = new View(a);

mylist = inflater.inflate(R.layout.row_listfav, null);

TextView textView1 = (TextView) mylist.findViewById(R.id.row_listfav_name);
final ImageView img=(ImageView) mylist.findViewById(R.id.row_listfav_img);


textView1.setText(N[pos]);

img.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {

mydb=mydata.getWritableDatabase();
mydb.execSQL("UPDATE tbl SET fav='0' WHERE name='"+N[pos]+"'");
mydb.close();
a.refresh2();
notifyDataSetChanged();
}
});


} else {
mylist = convertView;
}
return mylist;
}


}

بقیه هم مانند پست قبلی

شما Activity رو به ListActivity تغییر دادید ،

چطور a.refresh2 رو مینویسید ؟ اینجوری قبول نمیکنه ، عکس خطا گرفتنش رو میزارم :

وقتی روی پیام خطا add cast کلیک میکنم به این صورت میاد :
((Object) a).refresh2();
که بازم زیر refresh خط قرمز ،
در MyAdapter2 اکتیویتی مربوط به refresh2 رو تعریف میکنم
private Fav fav;
جای object میزاره Fav ،
اما بازم همون خطا ها رو یده موقع اجرا

mohamadamina50
دوشنبه 23 فروردین 1395, 21:26 عصر
در قسمت کلیک ایمیج این کد رو بزار .
n.remove(pos);
بعد هم این متود رو بعد از کد بالایی بزار تا کار آپدیت صورت بگیره
notifyDataSetChanged();