انجمن سایت کلیدستان



مشکل لیست ویو سفارشی (برنامه نویسی اندروید)زمان کنونی: ۱۳۹۵/۰۹/۱۵، ۱۲:۵۳ ب.ظ
کاربران در حال بازدید این موضوع: 1 مهمان
نویسنده: klike
آخرین ارسال: klike
پاسخ 12
بازدید 454

رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
مشکل لیست ویو سفارشی (برنامه نویسی اندروید)

مشکل لیست ویو سفارشی (برنامه نویسی اندروید)

#1
سلام دوستان
من طبق آموزشهایی که توی همین سایت وجود داره تونستم یه لیست ویو سفارشی بسازم
ولی یک مشکلی دارم
و اونم اینه که :

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

Huh Huh Huh Huh Huh Huh Huh

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

لطفا راهنماییم کنین مشکلم حل شه و اولین ایده ی خودمو عملی کنم .
پاسخ

مشکل لیست ویو سفارشی (برنامه نویسی اندروید)

#2
لطفا کد رو بزارید تا دوستان نظر پیگیری کنن
 Android Heart
سایت من Iran
پاسخ

مشکل لیست ویو سفارشی (برنامه نویسی اندروید)

#3
سلام.
تا کدها رو قرار ندهید، نمیشه نظر داد، ولی در موضوع زیر، توضیحات مفیدی در این زمینه وجود دارد :

http://www.kelidestan.com/forum/showthread.php?tid=4929

منظورم این نیست که دقیقا کدها را مثل کدهای آن موضوع بنویسید، بلکه تنها نکات موجود در آن را بررسی کنید.
همچنین دسته کلید زیر را ببینید :

دسته کلید شماره 124

در واقع، یا مشکل از کدهای java مربوط به کار با database است، یا اینکه اصلا خود query (دستور فراخوانی از database) اشتباه نوشته شده و نتایجی غیر از آنچه می خواهید را برمی گرداند.

Flower
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط klike

مشکل لیست ویو سفارشی (برنامه نویسی اندروید)

#4
(۱۳۹۵/۰۵/۰۳, ۰۸:۰۲ ب.ظ)admin نوشته: سلام.
تا کدها رو قرار ندهید، نمیشه نظر داد، ولی در موضوع زیر، توضیحات مفیدی در این زمینه وجود دارد :

http://www.kelidestan.com/forum/showthread.php?tid=4929

منظورم این نیست که دقیقا کدها را مثل کدهای آن موضوع بنویسید، بلکه تنها نکات موجود در آن را بررسی کنید.
همچنین دسته کلید زیر را ببینید :

دسته کلید شماره 124

در واقع، یا مشکل از کدهای java مربوط به کار با database است، یا اینکه اصلا خود query (دستور فراخوانی از database) اشتباه نوشته شده و نتایجی غیر از آنچه می خواهید را برمی گرداند.

Flower


آخه با لیست ویو ی ساده تموم رذیف های ذخیره شذه در دیتابیس رو بر میگردونه
پس مشکل از کوئری ها نمی تونه باشه


چشم انشاالله ب زوذی کد هارو قرار میدم .
خییییییییییییییییییییییییییللللللللللللللییییییییییییییییییی ممنون از سایت خیییییییییییییللللللللللللیییییییییییی خوبتون Heart
پاسخ
 سپاس شده توسط admin

مشکل لیست ویو سفارشی (برنامه نویسی اندروید)

#5
کد های کامل لیست ویو سفارشی
با تشکر از مدیریت Heart


فایل‌های پیوست

دانلود FILE.rar

نام فایل FILE.rar
نوع فایل .rar
دفعات دانلود 13
اندازه 37.63 KB
ارسال کننده فایل klike
پاسخ

مشکل لیست ویو سفارشی (برنامه نویسی اندروید)

#6
(۱۳۹۵/۰۵/۰۶, ۱۲:۵۳ ب.ظ)klike نوشته: کد های کامل لیست ویو سفارشی
با تشکر از مدیریت Heart

منظور بنده این بود که کدها را درج کنید (درج بخش های مهم آنها به صورت بلوک کد) تا فردی که موضوع را می خواند، نگاهی هم به کدها بیندازد و اگر موردی به ذهنش رسید، آن را تذکر بدهد.
معمولا فایل ها توسط کاربران دانلود نمی شوند.

Flower
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ

مشکل لیست ویو سفارشی (برنامه نویسی اندروید)

#7
(۱۳۹۵/۰۵/۰۶, ۰۸:۲۰ ب.ظ)admin نوشته:
(۱۳۹۵/۰۵/۰۶, ۱۲:۵۳ ب.ظ)klike نوشته: کد های کامل لیست ویو سفارشی
با تشکر از مدیریت Heart

منظور بنده این بود که کدها را درج کنید (درج بخش های مهم آنها به صورت بلوک کد) تا فردی که موضوع را می خواند، نگاهی هم به کدها بیندازد و اگر موردی به ذهنش رسید، آن را تذکر بدهد.
معمولا فایل ها توسط کاربران دانلود نمی شوند.

Flower


Sad Sad  بله حق با شماست
پاسخ

مشکل لیست ویو سفارشی (برنامه نویسی اندروید)

#8
(۱۳۹۵/۰۵/۰۶, ۰۸:۲۰ ب.ظ)admin نوشته:
(۱۳۹۵/۰۵/۰۶, ۱۲:۵۳ ب.ظ)klike نوشته: کد های کامل لیست ویو سفارشی
با تشکر از مدیریت Heart

منظور بنده این بود که کدها را درج کنید (درج بخش های مهم آنها به صورت بلوک کد) تا فردی که موضوع را می خواند، نگاهی هم به کدها بیندازد و اگر موردی به ذهنش رسید، آن را تذکر بدهد.
معمولا فایل ها توسط کاربران دانلود نمی شوند.

Flower
من ابتدا یک کلاس جدا گانه برای لیست ویو سفارشیم ساختم که کد هاش بصورت زیر :
کد:
package com.Ehsan.timer;

import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class CustomList extends ArrayAdapter<String>{
    
    
  private final Activity context;
 
  private final String[] roz;
  private final String[] tar;
  private final String[] time;
  private final String[] mony;
 
  private final Integer[] imageId;


  public CustomList(Activity context,
  String[] roz,String[] tar,String[] time,String[] mony, Integer[] imageId) {
  super(context, R.layout.activity_search, roz);
  this.context = context;
  this.roz = roz;
  this.tar = tar;
  this.time = time;
  this.mony = mony;
  this.imageId = imageId;
}
  @Override
  public View getView(int position, View view, ViewGroup parent) {
  LayoutInflater inflater = context.getLayoutInflater();
 
  View rowView= inflater.inflate(R.layout.activity_search, null, true);
 
  TextView txtday = (TextView) rowView.findViewById(R.id.lbl_roz);
  TextView txtdates = (TextView) rowView.findViewById(R.id.lbl_date);
  TextView txttimes = (TextView) rowView.findViewById(R.id.lbl_times);
  TextView txtmoneys = (TextView) rowView.findViewById(R.id.lbl_moneys);
 
  ImageView imageView = (ImageView) rowView.findViewById(R.id.picitem);
 
  txtday.setText(roz[position]);
  txtdates.setText(tar[position]);
  txttimes.setText(time[position]);
  txtmoneys.setText(mony[position]);
 
  imageView.setImageResource(imageId[position]);
  return rowView;
}
 
}
پاسخ

مشکل لیست ویو سفارشی (برنامه نویسی اندروید)

#9
(۱۳۹۵/۰۵/۰۷, ۰۱:۲۲ ب.ظ)klike نوشته:
(۱۳۹۵/۰۵/۰۶, ۰۸:۲۰ ب.ظ)admin نوشته:
(۱۳۹۵/۰۵/۰۶, ۱۲:۵۳ ب.ظ)klike نوشته: کد های کامل لیست ویو سفارشی
با تشکر از مدیریت Heart

منظور بنده این بود که کدها را درج کنید (درج بخش های مهم آنها به صورت بلوک کد) تا فردی که موضوع را می خواند، نگاهی هم به کدها بیندازد و اگر موردی به ذهنش رسید، آن را تذکر بدهد.
معمولا فایل ها توسط کاربران دانلود نمی شوند.

Flower
من ابتدا یک کلاس جدا گانه برای لیست ویو سفارشیم ساختم که کد هاش بصورت زیر :
کد:
package com.Ehsan.timer;

import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class CustomList extends ArrayAdapter<String>{
    
    
  private final Activity context;
 
  private final String[] roz;
  private final String[] tar;
  private final String[] time;
  private final String[] mony;
 
  private final Integer[] imageId;


  public CustomList(Activity context,
  String[] roz,String[] tar,String[] time,String[] mony, Integer[] imageId) {
  super(context, R.layout.activity_search, roz);
  this.context = context;
  this.roz = roz;
  this.tar = tar;
  this.time = time;
  this.mony = mony;
  this.imageId = imageId;
}
  @Override
  public View getView(int position, View view, ViewGroup parent) {
  LayoutInflater inflater = context.getLayoutInflater();
 
  View rowView= inflater.inflate(R.layout.activity_search, null, true);
 
  TextView txtday = (TextView) rowView.findViewById(R.id.lbl_roz);
  TextView txtdates = (TextView) rowView.findViewById(R.id.lbl_date);
  TextView txttimes = (TextView) rowView.findViewById(R.id.lbl_times);
  TextView txtmoneys = (TextView) rowView.findViewById(R.id.lbl_moneys);
 
  ImageView imageView = (ImageView) rowView.findViewById(R.id.picitem);
 
  txtday.setText(roz[position]);
  txtdates.setText(tar[position]);
  txttimes.setText(time[position]);
  txtmoneys.setText(mony[position]);
 
  imageView.setImageResource(imageId[position]);
  return rowView;
}
 
}
 و بعد در کلاس اکتیویتی مورد نظرم فرا خوانی کردم . ولی موقع اجرا ارور میده (length : 0 - index : 0)
این هم کد های کلاس ایکتیویتی

کد:
package com.Ehsan.timer;


import java.util.ArrayList;




import android.os.Build;
import android.os.Bundle;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.ActionBar;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.database.Cursor;
import android.graphics.Typeface;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

@SuppressLint("NewApi") public class Search extends Activity {
    
    private ListView listView;  
    private ArrayList<String> list;  
    DATABASEME rdbr;
    
    String[] lbl0 = {};
    String[] lbl1 = {};
    String[] lbl2 = {};
    String[] lbl3 = {};
    Integer[] img = {};    
    
   @TargetApi(Build.VERSION_CODES.HONEYCOMB) @SuppressLint("NewApi") @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_search);
    
        
        
        listView=(ListView) findViewById(R.id.listboxx);  
          
        
           rdbr=new DATABASEME(getBaseContext());
           rdbr.open();
           Cursor c=rdbr.getall();  
           String TARIKH,ZAMAN,POL;
           try  
           {
              if(c.moveToFirst())  
              {  
                  
                 do  
                 {
                    
                    TARIKH=c.getString(c.getColumnIndex("TARIKH"));
                    ZAMAN=c.getString(c.getColumnIndex("MAJMOE_SAAT"));
                    POL=c.getString(c.getColumnIndex("KARKERD"));
                    String[] rozz  = TARIKH.split("/");
                    
                    lbl0[lbl0.length] = rozz[2];
                    lbl1[lbl1.length] = TARIKH;
                       lbl2[lbl2.length] = ZAMAN;
                       lbl3[lbl3.length] = POL;
                       img[img.length] = R.drawable.web;    
                        
                 }while(c.moveToNext());
                
              }
              else  
              {  
                 Toast.makeText(getApplicationContext(), "هیچ رکوردی موجود نیست", Toast.LENGTH_SHORT).show();  
              }  
              }catch(Exception e)  
              {  
                 Toast.makeText(getApplicationContext(), " خطا : " + e.getMessage(), Toast.LENGTH_SHORT).show();  
              }  
           rdbr.close();
        
        
           //اینجا آیتم های لیست ویو رو نمایش میرم
           CustomList adapter = new
           CustomList(Search.this,lbl0,lbl1,lbl2,lbl3,img);
           listView.setAdapter(adapter);
          
          
           listView.setOnItemLongClickListener(new OnItemLongClickListener() {
                
                @Override
                public boolean onItemLongClick(AdapterView<?> a, View v, int position, long id) {
                    // TODO Auto-generated method stub
                       String numit = list.get(position);
                       rdbr=new DATABASEME(getBaseContext());
                       rdbr.open();  
                       try  
                       {  
                        
                          Cursor c=rdbr.Getitm(numit, null);  
                          String MAJMOE_SAAT,KARKERD;
                          
                          if(c.moveToFirst())  
                          {  
                             do  
                             {
                                
                                MAJMOE_SAAT=c.getString(c.getColumnIndex("MAJMOE_SAAT"));
                                KARKERD=c.getString(c.getColumnIndex("KARKERD"));


                                //تعریف ایتم های لیست دیالوگ
                                final CharSequence[] items = {"مجموع ساعات : " + MAJMOE_SAAT, "کارکرد : "+
                                KARKERD + " تومان"};
                                
                                //ساخت یک ذیالوگ
                                AlertDialog.Builder builder = new AlertDialog.Builder(Search.this);
                                builder.setTitle("جزئیات");
                                builder.setItems(items, new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int item) {
                                    
                                }
                                });
                                //قابل نمایش کرد الرت دیالوگ
                                AlertDialog alert = builder.create();
                                alert.show();
                                 
                                
                             }while(c.moveToNext());//حرکت کورس به جدول بعدی.             
                          }
                          else  
                          {  
                             Toast.makeText(getApplicationContext(), "هیچ رکوردی موجود نیست", Toast.LENGTH_SHORT).show();  
                          }  
                          }catch(Exception e)  
                          {  
                             Toast.makeText(getApplicationContext(), "خطا : "+e.getMessage(), Toast.LENGTH_SHORT).show();  
                          }  
                       rdbr.close();
                    
                    return false;
                }
            });
          
          
          
        
        
        //ActionBar
       Typeface kamran = Typeface.createFromAsset(getAssets(), "font/BKAMRANB.TTF");
        ActionBar mActionBar = getActionBar();
        mActionBar.setDisplayShowHomeEnabled(false);
        mActionBar.setDisplayShowTitleEnabled(false);
        LayoutInflater mInflater = LayoutInflater.from(this);
        View mCustomView = mInflater.inflate(R.layout.actionbar, null);
       TextView title = (TextView) mCustomView.findViewById(R.id.title);
       title.setTypeface(kamran);
       title.setText("جستجو");
       title.setTextSize(22);
       

       ImageView menu = (ImageView) mCustomView.findViewById(R.id.menubtn);
       menu.setImageResource(R.drawable.previousbtn);
       
       menu.setOnClickListener(new View.OnClickListener() {
            
            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                finish();
            }
        });
       
        mActionBar.setCustomView(mCustomView);
        mActionBar.setDisplayShowCustomEnabled(true);
        //ActionBar
       
        
    }

   
   
 

}
پاسخ

مشکل لیست ویو سفارشی (برنامه نویسی اندروید)

#10
(۱۳۹۵/۰۵/۰۷, ۰۱:۲۶ ب.ظ)klike نوشته:
(۱۳۹۵/۰۵/۰۷, ۰۱:۲۲ ب.ظ)klike نوشته:
(۱۳۹۵/۰۵/۰۶, ۰۸:۲۰ ب.ظ)admin نوشته:
(۱۳۹۵/۰۵/۰۶, ۱۲:۵۳ ب.ظ)klike نوشته: کد های کامل لیست ویو سفارشی
با تشکر از مدیریت Heart

منظور بنده این بود که کدها را درج کنید (درج بخش های مهم آنها به صورت بلوک کد) تا فردی که موضوع را می خواند، نگاهی هم به کدها بیندازد و اگر موردی به ذهنش رسید، آن را تذکر بدهد.
معمولا فایل ها توسط کاربران دانلود نمی شوند.

Flower
من ابتدا یک کلاس جدا گانه برای لیست ویو سفارشیم ساختم که کد هاش بصورت زیر :
کد:
package com.Ehsan.timer;

import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class CustomList extends ArrayAdapter<String>{
    
    
  private final Activity context;
 
  private final String[] roz;
  private final String[] tar;
  private final String[] time;
  private final String[] mony;
 
  private final Integer[] imageId;


  public CustomList(Activity context,
  String[] roz,String[] tar,String[] time,String[] mony, Integer[] imageId) {
  super(context, R.layout.activity_search, roz);
  this.context = context;
  this.roz = roz;
  this.tar = tar;
  this.time = time;
  this.mony = mony;
  this.imageId = imageId;
}
  @Override
  public View getView(int position, View view, ViewGroup parent) {
  LayoutInflater inflater = context.getLayoutInflater();
 
  View rowView= inflater.inflate(R.layout.activity_search, null, true);
 
  TextView txtday = (TextView) rowView.findViewById(R.id.lbl_roz);
  TextView txtdates = (TextView) rowView.findViewById(R.id.lbl_date);
  TextView txttimes = (TextView) rowView.findViewById(R.id.lbl_times);
  TextView txtmoneys = (TextView) rowView.findViewById(R.id.lbl_moneys);
 
  ImageView imageView = (ImageView) rowView.findViewById(R.id.picitem);
 
  txtday.setText(roz[position]);
  txtdates.setText(tar[position]);
  txttimes.setText(time[position]);
  txtmoneys.setText(mony[position]);
 
  imageView.setImageResource(imageId[position]);
  return rowView;
}
 
}
 و بعد در کلاس اکتیویتی مورد نظرم فرا خوانی کردم . ولی موقع اجرا ارور میده (length : 0 - index : 0)
این هم کد های کلاس ایکتیویتی

کد:
package com.Ehsan.timer;


import java.util.ArrayList;




import android.os.Build;
import android.os.Bundle;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.ActionBar;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.database.Cursor;
import android.graphics.Typeface;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

@SuppressLint("NewApi") public class Search extends Activity {
    
    private ListView listView;  
    private ArrayList<String> list;  
    DATABASEME rdbr;
    
    String[] lbl0 = {};
    String[] lbl1 = {};
    String[] lbl2 = {};
    String[] lbl3 = {};
    Integer[] img = {};    
    
   @TargetApi(Build.VERSION_CODES.HONEYCOMB) @SuppressLint("NewApi") @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_search);
    
        
        
        listView=(ListView) findViewById(R.id.listboxx);  
          
        
           rdbr=new DATABASEME(getBaseContext());
           rdbr.open();
           Cursor c=rdbr.getall();  
           String TARIKH,ZAMAN,POL;
           try  
           {
              if(c.moveToFirst())  
              {  
                  
                 do  
                 {
                    
                    TARIKH=c.getString(c.getColumnIndex("TARIKH"));
                    ZAMAN=c.getString(c.getColumnIndex("MAJMOE_SAAT"));
                    POL=c.getString(c.getColumnIndex("KARKERD"));
                    String[] rozz  = TARIKH.split("/");
                    
                    lbl0[lbl0.length] = rozz[2];
                    lbl1[lbl1.length] = TARIKH;
                       lbl2[lbl2.length] = ZAMAN;
                       lbl3[lbl3.length] = POL;
                       img[img.length] = R.drawable.web;    
                        
                 }while(c.moveToNext());
                
              }
              else  
              {  
                 Toast.makeText(getApplicationContext(), "هیچ رکوردی موجود نیست", Toast.LENGTH_SHORT).show();  
              }  
              }catch(Exception e)  
              {  
                 Toast.makeText(getApplicationContext(), " خطا : " + e.getMessage(), Toast.LENGTH_SHORT).show();  
              }  
           rdbr.close();
        
        
           //اینجا آیتم های لیست ویو رو نمایش میرم
           CustomList adapter = new
           CustomList(Search.this,lbl0,lbl1,lbl2,lbl3,img);
           listView.setAdapter(adapter);
          
          
           listView.setOnItemLongClickListener(new OnItemLongClickListener() {
                
                @Override
                public boolean onItemLongClick(AdapterView<?> a, View v, int position, long id) {
                    // TODO Auto-generated method stub
                       String numit = list.get(position);
                       rdbr=new DATABASEME(getBaseContext());
                       rdbr.open();  
                       try  
                       {  
                        
                          Cursor c=rdbr.Getitm(numit, null);  
                          String MAJMOE_SAAT,KARKERD;
                          
                          if(c.moveToFirst())  
                          {  
                             do  
                             {
                                
                                MAJMOE_SAAT=c.getString(c.getColumnIndex("MAJMOE_SAAT"));
                                KARKERD=c.getString(c.getColumnIndex("KARKERD"));


                                //تعریف ایتم های لیست دیالوگ
                                final CharSequence[] items = {"مجموع ساعات : " + MAJMOE_SAAT, "کارکرد : "+
                                KARKERD + " تومان"};
                                
                                //ساخت یک ذیالوگ
                                AlertDialog.Builder builder = new AlertDialog.Builder(Search.this);
                                builder.setTitle("جزئیات");
                                builder.setItems(items, new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int item) {
                                    
                                }
                                });
                                //قابل نمایش کرد الرت دیالوگ
                                AlertDialog alert = builder.create();
                                alert.show();
                                 
                                
                             }while(c.moveToNext());//حرکت کورس به جدول بعدی.             
                          }
                          else  
                          {  
                             Toast.makeText(getApplicationContext(), "هیچ رکوردی موجود نیست", Toast.LENGTH_SHORT).show();  
                          }  
                          }catch(Exception e)  
                          {  
                             Toast.makeText(getApplicationContext(), "خطا : "+e.getMessage(), Toast.LENGTH_SHORT).show();  
                          }  
                       rdbr.close();
                    
                    return false;
                }
            });
          
          
          
        
        
        //ActionBar
       Typeface kamran = Typeface.createFromAsset(getAssets(), "font/BKAMRANB.TTF");
        ActionBar mActionBar = getActionBar();
        mActionBar.setDisplayShowHomeEnabled(false);
        mActionBar.setDisplayShowTitleEnabled(false);
        LayoutInflater mInflater = LayoutInflater.from(this);
        View mCustomView = mInflater.inflate(R.layout.actionbar, null);
       TextView title = (TextView) mCustomView.findViewById(R.id.title);
       title.setTypeface(kamran);
       title.setText("جستجو");
       title.setTextSize(22);
       

       ImageView menu = (ImageView) mCustomView.findViewById(R.id.menubtn);
       menu.setImageResource(R.drawable.previousbtn);
       
       menu.setOnClickListener(new View.OnClickListener() {
            
            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                finish();
            }
        });
       
        mActionBar.setCustomView(mCustomView);
        mActionBar.setDisplayShowCustomEnabled(true);
        //ActionBar
       
        
    }

   
   
 

}
این هم کد های xml لیست ویو سفارشی :

کد:
<?xml version="1.0" encoding="UTF-8"?>

-<RelativeLayout tools:ignore="HardcodedText,ContentDescription" android:layout_height="match_parent" android:layout_width="match_parent" xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android">

<ImageView android:layout_height="80dp" android:layout_width="80dp" android:src="@drawable/web" android:padding="10dp" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:id="@+id/picitem"/>

<TextView android:layout_height="wrap_content" android:layout_width="25dp" android:id="@+id/lbl_roz" android:textAppearance="?android:attr/textAppearanceLarge" android:textAlignment="center" android:text="31" android:layout_marginRight="26dp" android:layout_marginBottom="25dp" android:layout_alignRight="@+id/picitem" android:layout_alignBottom="@+id/picitem"/>

<TextView android:layout_height="wrap_content" android:layout_width="wrap_content" android:padding="5dp" android:id="@+id/lbl_date" android:textAppearance="?android:attr/textAppearanceMedium" android:text="Medium Text" android:layout_toRightOf="@+id/picitem" android:layout_marginTop="5dp"/>

<TextView android:layout_height="wrap_content" android:layout_width="wrap_content" android:padding="5dp" android:id="@+id/lbl_times" android:text="TextView" android:layout_marginBottom="10dp" android:layout_alignBottom="@+id/picitem" android:layout_alignLeft="@+id/lbl_date"/>

<TextView android:layout_height="wrap_content" android:layout_width="wrap_content" android:padding="5dp" android:id="@+id/lbl_moneys" android:text="TextView" android:layout_marginRight="5dp" android:layout_alignBottom="@+id/lbl_times" android:layout_alignParentRight="true" android:layout_alignBaseline="@+id/lbl_times"/>

</RelativeLayout>
پاسخ

مشکل لیست ویو سفارشی (برنامه نویسی اندروید)

#11
من نگاهی به کدها انداختم.
می دانم بخش های مختلف کدها را می دانید، اما بنده به خاطر سایر کاربران، به صورت کامل توضیح می دهم.
در کلاس CustomList که در واقع Adapter مربوط به ListView است (از گسترش ArrayAdapter ساخته شده) و item های (ردیف های) ListView را می سازد، ورودی های آن به صورت زیر تعریف شده اند (5 ورودی) :

کد پی‌اچ‌پی:
public CustomList(Activity context,
 
 String[] roz,String[] tar,String[] time,String[] monyInteger[] imageId) { 

مشاهده می کنید که تمامی ورودی ها، آرایه (Array) می باشند (دسته کلید شماره 330).


اکنون به سراغ کدهای Activity با نام Search می رویم.
با کد زیر، به درستی Adapter را برای ListView تعیین کرده ایم :

کد پی‌اچ‌پی:
CustomList adapter = new
CustomList(Search.this,lbl0,lbl1,lbl2,lbl3,img);
listView.setAdapter(adapter); 

از کد بالا، نام 5 ورودی برای Adapter را متوجه می شویم و بنابراین در کدها باید شیوه تعریف و مقداردهی آنها را بررسی کنیم.
تعریف اولیه آنها به صورت زیر است :

کد پی‌اچ‌پی:
String[] lbl0 = {};
String[] lbl1 = {};
String[] lbl2 = {};
String[] lbl3 = {};
Integer[] img = {}; 

و کدهای مربوط به مقداردهی آنها (فراخوانی از پایگاه داده) به صورت زیر نوشته شده :

کد پی‌اچ‌پی:
if(c.moveToFirst())  
 
  
 
do  
 
{
 
    
    TARIKH
=c.getString(c.getColumnIndex("TARIKH"));
 
   ZAMAN=c.getString(c.getColumnIndex("MAJMOE_SAAT"));
 
   POL=c.getString(c.getColumnIndex("KARKERD"));
 
   String[] rozz  TARIKH.split("/");
 
   
    lbl0
[lbl0.length] = rozz[2];
 
   lbl1[lbl1.length] = TARIKH
 
      lbl2[lbl2.length] = ZAMAN;
 
      lbl3[lbl3.length] = POL;
 
      img[img.length] = R.drawable.web   
        
 
}while(c.moveToNext()); 
 
}
else 
 
 
 Toast
.makeText(getApplicationContext(), "هیچ رکوردی موجود نیست"Toast.LENGTH_SHORT).show();  


در اینجا و با توجه به تعریف اولیه آرایه ها (Array)، مشکل مشخص می شود. شما طول اولیه برای آرایه ها (Array) مشخص نکرده اید و بعد قصد دارید که به ترتیب، عنصرهای شماره 0 و 1 و 2 و 3 و ... از آرایه ها (Array) را مقداردهی کنید : 

کد پی‌اچ‌پی:
lbl0[lbl0.length] = rozz[2];
lbl1[lbl1.length] = TARIKH
lbl2[lbl2.length] = ZAMAN;
lbl3[lbl3.length] = POL;
img[img.length] = R.drawable.web    


در صورتی که این روش، باعث ایجاد خطا می شود (برای کدنویسی استاندارد در مورد آرایه ها (Array)، کلید شماره 2877 را بخوانید).
برای اینکه ایجاد خطا را عملا خودتان ببینید، یک پروژه اندروید ساده (جدا از این پروژه) بسازید و کد زیر را در آن اجرا کنید (مشابه کدی که اکنون نوشته اید) :

کد پی‌اچ‌پی:
String[] My_Array = {};
My_Array[0] = "text 1";
My_Array[1] = "text 2";
My_Array[2] = "text 3"


با اجرای کد بالا، با خطا روبرو خواهید شد. اما شیوه کدنویسی صحیح برای آن، به صورت زیر می باشد :

کد پی‌اچ‌پی:
String[] My_Array = new String[3];
My_Array[0] = "text 1";
My_Array[1] = "text 2";
My_Array[2] = "text 3"


اکنون که دلیل ایجاد خطا را متوجه شدید، دو راه دارید :
1- به شکلی کدها را تغییر دهید که بتوانید تعریف آرایه ها (Array) را با یک طول اولیه (برابر تعداد ردیف برگردانده شده از جدول موجود در پایگاه داده) قرار بدهید.
2- از لیست آرایه ای (ArrayList) استفاده کنید (دسته کلید شماره 123) که نیازی به تعریف طول اولیه برای آن نیست و با استفاده از روش add (کلید شماره 315) می توان عنصرهای جدید به آن اضافه نمود.

دقت شود که اگر از روش شماره 2 استفاده کنید، باید نوع ورودی های کلاس CustomList (همان Adapter) را هم تغییر بدهید (تبدیل از Array به ArrayList) و چون شیوه استفاده از این دو هم متفاوت است، احتمالا باید بخش هایی از کدها را تصحیح کنید (همان نوع ورودی ها را که عوض کنید، پیام های خطا به شما نشان می دهند که چه مواردی باید تغییر داده شوند).

---------------------------------------------------

این نکاتی که ذکر شد، مربوط به خطا بود، اما همچنین گفتید که تنها آخرین ردیف از جدول نمایش داده می شود (البته نگفتید که تنها یک item نمایش داده می شود یا تعدادی item که همگی برابر ردیف آخر از جدول هستند، ولی به هر حال، حالت دوم را هم بررسی می کنم). 
بنده در این زمینه، مورد دیگری که مهم بود را هم چک کردم (البته در حالتی این مورد مهم است که تعدادی item داشته باشیم، ولی اطلاعات آنها جابجا یا تکراری باشد)، که همان وابسته بودن نمایش اطلاعات هر item از ListView به متغیر position می باشد. برای این مورد، باید در کدهای Adapter ، در روش getView ببینیم که item های Listview چگونه مقداردهی می شوند. کدهای آن به صورت زیر است :

کد پی‌اچ‌پی:
txtday.setText(roz[position]);
txtdates.setText(tar[position]);
txttimes.setText(time[position]);
txtmoneys.setText(mony[position]);

imageView.setImageResource(imageId[position]); 

مشاهده می کنید که وابستگی به position به درستی اعمال شده است.

بنابراین چنانچه بعد از برطرف کردن آن خطای خاص که ذکر شد، باز هم با برگردانده شدن تنها ردیف آخر از جدول روبرو شدید، توصیه می شود کدهای کار با پایگاه داده و query را بررسی نمایید.
همچنین از نمایش پیام هایی در LogCat برای بررسی اطلاعات در هر مرحله از کدها استفاده کنید. 

Flower
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط klike

مشکل لیست ویو سفارشی (برنامه نویسی اندروید)

#12
(۱۳۹۵/۰۵/۰۷, ۱۱:۳۷ ب.ظ)admin نوشته: من نگاهی به کدها انداختم.
می دانم بخش های مختلف کدها را می دانید، اما بنده به خاطر سایر کاربران، به صورت کامل توضیح می دهم.
در کلاس CustomList که در واقع Adapter مربوط به ListView است (از گسترش ArrayAdapter ساخته شده) و item های (ردیف های) ListView را می سازد، ورودی های آن به صورت زیر تعریف شده اند (5 ورودی) :

کد پی‌اچ‌پی:
public CustomList(Activity context,
 
 String[] roz,String[] tar,String[] time,String[] monyInteger[] imageId) { 

مشاهده می کنید که تمامی ورودی ها، آرایه (Array) می باشند (دسته کلید شماره 330).


اکنون به سراغ کدهای Activity با نام Search می رویم.
با کد زیر، به درستی Adapter را برای ListView تعیین کرده ایم :

کد پی‌اچ‌پی:
CustomList adapter = new
CustomList(Search.this,lbl0,lbl1,lbl2,lbl3,img);
listView.setAdapter(adapter); 

از کد بالا، نام 5 ورودی برای Adapter را متوجه می شویم و بنابراین در کدها باید شیوه تعریف و مقداردهی آنها را بررسی کنیم.
تعریف اولیه آنها به صورت زیر است :

کد پی‌اچ‌پی:
String[] lbl0 = {};
String[] lbl1 = {};
String[] lbl2 = {};
String[] lbl3 = {};
Integer[] img = {}; 

و کدهای مربوط به مقداردهی آنها (فراخوانی از پایگاه داده) به صورت زیر نوشته شده :

کد پی‌اچ‌پی:
if(c.moveToFirst())  
 
  
 
do  
 
{
 
    
    TARIKH
=c.getString(c.getColumnIndex("TARIKH"));
 
   ZAMAN=c.getString(c.getColumnIndex("MAJMOE_SAAT"));
 
   POL=c.getString(c.getColumnIndex("KARKERD"));
 
   String[] rozz  TARIKH.split("/");
 
   
    lbl0
[lbl0.length] = rozz[2];
 
   lbl1[lbl1.length] = TARIKH
 
      lbl2[lbl2.length] = ZAMAN;
 
      lbl3[lbl3.length] = POL;
 
      img[img.length] = R.drawable.web   
        
 
}while(c.moveToNext()); 
 
}
else 
 
 
 Toast
.makeText(getApplicationContext(), "هیچ رکوردی موجود نیست"Toast.LENGTH_SHORT).show();  


در اینجا و با توجه به تعریف اولیه آرایه ها (Array)، مشکل مشخص می شود. شما طول اولیه برای آرایه ها (Array) مشخص نکرده اید و بعد قصد دارید که به ترتیب، عنصرهای شماره 0 و 1 و 2 و 3 و ... از آرایه ها (Array) را مقداردهی کنید : 

کد پی‌اچ‌پی:
lbl0[lbl0.length] = rozz[2];
lbl1[lbl1.length] = TARIKH
lbl2[lbl2.length] = ZAMAN;
lbl3[lbl3.length] = POL;
img[img.length] = R.drawable.web    


در صورتی که این روش، باعث ایجاد خطا می شود (برای کدنویسی استاندارد در مورد آرایه ها (Array)، کلید شماره 2877 را بخوانید).
برای اینکه ایجاد خطا را عملا خودتان ببینید، یک پروژه اندروید ساده (جدا از این پروژه) بسازید و کد زیر را در آن اجرا کنید (مشابه کدی که اکنون نوشته اید) :

کد پی‌اچ‌پی:
String[] My_Array = {};
My_Array[0] = "text 1";
My_Array[1] = "text 2";
My_Array[2] = "text 3"


با اجرای کد بالا، با خطا روبرو خواهید شد. اما شیوه کدنویسی صحیح برای آن، به صورت زیر می باشد :

کد پی‌اچ‌پی:
String[] My_Array = new String[3];
My_Array[0] = "text 1";
My_Array[1] = "text 2";
My_Array[2] = "text 3"


اکنون که دلیل ایجاد خطا را متوجه شدید، دو راه دارید :
1- به شکلی کدها را تغییر دهید که بتوانید تعریف آرایه ها (Array) را با یک طول اولیه (برابر تعداد ردیف برگردانده شده از جدول موجود در پایگاه داده) قرار بدهید.
2- از لیست آرایه ای (ArrayList) استفاده کنید (دسته کلید شماره 123) که نیازی به تعریف طول اولیه برای آن نیست و با استفاده از روش add (کلید شماره 315) می توان عنصرهای جدید به آن اضافه نمود.

دقت شود که اگر از روش شماره 2 استفاده کنید، باید نوع ورودی های کلاس CustomList (همان Adapter) را هم تغییر بدهید (تبدیل از Array به ArrayList) و چون شیوه استفاده از این دو هم متفاوت است، احتمالا باید بخش هایی از کدها را تصحیح کنید (همان نوع ورودی ها را که عوض کنید، پیام های خطا به شما نشان می دهند که چه مواردی باید تغییر داده شوند).

---------------------------------------------------

این نکاتی که ذکر شد، مربوط به خطا بود، اما همچنین گفتید که تنها آخرین ردیف از جدول نمایش داده می شود (البته نگفتید که تنها یک item نمایش داده می شود یا تعدادی item که همگی برابر ردیف آخر از جدول هستند، ولی به هر حال، حالت دوم را هم بررسی می کنم). 
بنده در این زمینه، مورد دیگری که مهم بود را هم چک کردم (البته در حالتی این مورد مهم است که تعدادی item داشته باشیم، ولی اطلاعات آنها جابجا یا تکراری باشد)، که همان وابسته بودن نمایش اطلاعات هر item از ListView به متغیر position می باشد. برای این مورد، باید در کدهای Adapter ، در روش getView ببینیم که item های Listview چگونه مقداردهی می شوند. کدهای آن به صورت زیر است :

کد پی‌اچ‌پی:
txtday.setText(roz[position]);
txtdates.setText(tar[position]);
txttimes.setText(time[position]);
txtmoneys.setText(mony[position]);

imageView.setImageResource(imageId[position]); 

مشاهده می کنید که وابستگی به position به درستی اعمال شده است.

بنابراین چنانچه بعد از برطرف کردن آن خطای خاص که ذکر شد، باز هم با برگردانده شدن تنها ردیف آخر از جدول روبرو شدید، توصیه می شود کدهای کار با پایگاه داده و query را بررسی نمایید.
همچنین از نمایش پیام هایی در LogCat برای بررسی اطلاعات در هر مرحله از کدها استفاده کنید. 

Flower

Heart Heart Heart Heart   آقا واقعا ممنونم . بهترین و سریع ترین انجمنی که تاحالا دیدم هستین
مدیریت بسیار بالا و عالی دارید .از هر طریقی بتونم  و هر کمکی از بنده بربیاد براتون انجام میدم . امیدوارم بتونم به خوبی جبران کنم . خیلی خیلی ممنون
  Heart Heart Heart Heart
پاسخ
 سپاس شده توسط admin


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان

آخرین کلیدهای غیررایگان

شما هم می توانید کلیدهای غیررایگان منتشر کنید (بیشتر بدانید)