بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
مشکل با نمایش اطلاعات گرفته شده از sqLite database در ListView(حل شد)
سلام دوستان
من یه لیست ویو رو طبق آموزش استاد میخوام پر کنم که شامل عکس و متن هست.
توی StructNote ( برای من StructUser) دو تا استرینگ گذاشتم به این صورت:
public class StructUser {
public String userimage;
public String username;
}
کلاس AdapterUser رو هم به این صورت تعریف کردم
public class AdapterUsers extends ArrayAdapter {
public AdapterUsers(ArrayList array){
super(G.context , R.layout.listrow , array);
}
private static class ViewHolder {
public ImageView imguser;
public TextView txtnameuser;
public ViewHolder (View view){
imguser = (ImageView)view.findViewById(R.id.imguser);
txtnameuser = (TextView)view.findViewById(R.id.txtnameuser);
}
public void fill(ArrayAdapter adapter , StructUser item , int position){
txtnameuser.setText(item.username);
Bitmap bitmap = getBitmapFromAsset(G.context , item.userimage);
imguser.setImageBitmap(bitmap);
}
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
StructUser item = getItem(position);
if(convertView == null)
{
G.layoutInflater.inflate(R.layout.listrow , parent , false);
holder = new ViewHolder(convertView);
convertView.setTag(holder);
}else {
holder = (ViewHolder) convertView.getTag();
}
holder.fill(this , item , position);
return convertView;
}
public static Bitmap getBitmapFromAsset(Context paramContext, String strName)
{
AssetManager assetManager = paramContext.getAssets();
InputStream istr = null;
try {
istr = assetManager.open(strName);
}
catch (IOException e) {
e.printStackTrace();
}
Bitmap bitmap = BitmapFactory.decodeStream(istr);
return bitmap;
}
}
توی اکتیویتی لیست ویو هم این کد ها رو نوشتم :
public class ActivityShowInfo extends Activity {
private LayoutInflater inflater;
private View view;
public ArrayList Suser = new ArrayList();
public ArrayAdapter adapteruser;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_showinfo);
adapteruser = new AdapterUsers(Suser);
inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.slidingmenu,null);
Boolean isFirstRun = getSharedPreferences("PREFERENCE", MODE_PRIVATE)
.getBoolean("isFirstRun", true);
if (isFirstRun) {
startActivity(new Intent(ActivityShowInfo.this, FirstLaunch.class));
finish();
}
// set the content view
setContentView(R.layout.activity_showinfo);
// configure the SlidingMenu
SlidingMenu menu = new SlidingMenu(this);
menu.setMode(SlidingMenu.RIGHT);
menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
menu.setShadowDrawable(R.drawable.shadow);
menu.setFadeDegree(0.35f);
menu.setBehindOffset(100);
menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
view.findViewById(R.id.LnewUser).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//open alert new user
// G.Userdatabase.execSQL("INSERT INTO users (users_name , users_pic ) VALUES ( 'amir' , 1 )");
G.adduser( "sss", "mard.png" , "off");
}
});
ListView listuser = (ListView)view.findViewById(R.id.lstUsers);
listuser.setAdapter(adapteruser);
Cursor cursors = G.Userdatabase.rawQuery("SELECT * FROM users WHERE users_on = 'off' " , null);
if(cursors != null) {
try {
if (cursors.getCount() > 0) {
for(int i = 0 ; i < cursors.getCount() ; i++){
StructUser users = new StructUser();
cursors.moveToNext();
users.username = cursors.getString(cursors.getColumnIndex("users_name"));
users.userimage = cursors.getString(cursors.getColumnIndex("users_pic"));
Suser.add(users);
}
adapteruser.notifyDataSetChanged();
}
}
finally {
cursors.close();
}
}
menu.setMenu(view);
}
}
البته لیست ویو داخل یه اسلایدینگ منو قرار داره ...
حالا وقتی اجرا میکنم کرش میکنه و این ارور ها توی لاگ کت نمایش داده میشه ...
01-29 16:55:19.529 439-528/? E/InputDispatcher﹕ channel '53339c50 amir.fallahi.pill.reminder/amir.fallahi.pill.reminder.ActivityShowInfo (server)' ~ Channel is unrecoverably broken and will be disposed! 01-29 17:17:18.545 30009-30009/? E/Trace﹕ error opening trace file: No such file or directory (2) 01-29 17:17:18.621 30009-30009/? E/AndroidRuntime﹕ FATAL EXCEPTION: main java.lang.NullPointerException at amir.fallahi.pill.reminder.AdapterUsers$ViewHolder.(AdapterUsers.java:35) at amir.fallahi.pill.reminder.AdapterUsers.getView(AdapterUsers.java:59)
چه کنم دوستان؟ لطفا کمک :)
0
0
دوستان میدونم خیلی زیاده کد ها و خوندنش یکم وقت گیره ولی خواهش میکنم یه کمکی یه سرنخی لینکی چیزی بهم بدید که بتونم مشکل رو پیدا کنم... (11 سال پیش)
0
0
فقط log رو خوندم ، خطای nullpointer داری علتشم این هست که اون مسیر یا فایل وجود نداره ... (11 سال پیش)
0
0
مرسی اسپریت جان. مشکل این بود که وجود داره فایل ولی این میگه نیست :| (11 سال پیش)
برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال
Hossein Kurd
11 سال پیش
0
0
دوست عزیز خط 35 AdapterUser تعیین کردی :
G.layoutInflater.inflate(R.layout.listrow , parent , false);
خب Layout Inflater ارش چیه؟ تیدیل xml به View ، و باید اون رو توی converView قرار بدی
convertView = G.layoutInflater.inflate(R.layout.listrow , parent , false);
به خطاها دقت کن :
java.lang.NullPointerException
و دوخط پایین اون تعیین می کنه که Error از کدوم خط در کدوم کلاس ناشی می شه:
at amir.fallahi.pill.reminder.AdapterUsers$ViewHolder.(AdapterUsers.java:35)
at amir.fallahi.pill.reminder.AdapterUsers.getView(AdapterUsers.java:59)
در کلاس AdapterUsers.java خط 35
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .