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


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

نمایش صفحات متوالی (نمایش 30 تا عکس با GridView) (در برنامه نویسی اندروید)

#1
با سلام در پروژه نزدیک 30 تا عکس دارم که می خوام نمایش بدم با گرید ویو ولی می خوام زیر هر عکس هم یک تکست باشه جی کار باید بکنم؟
پاسخ

نمایش صفحات متوالی (نمایش 30 تا عکس با GridView) (در برنامه نویسی اندروید)

#2
روش اول اینه:
در داخل گرید ویو بجای قرار دادن ImagView برای هر آیتم ..از LinearLayout استفاده کنید که داخل آن یک ImagView و یک TextView قرار داشته باشه..

روش دوم:
 روش بعدی اینه که بجای استفاده از ImagView ، از تگ TextView  استفاده کنید ..بعدش در داخل تکست ویو یک دستور است که میتوانید برای متن خودتون یک تصویر هم قرار دهید.

کد پی‌اچ‌پی:
<TextView
 
        android
:layout_width="match_parent"
        
android:layout_height="wrap_content"
        
android:drawableTop="@drawable/my_drawAble"
    
/> 
پاسخ
 سپاس شده توسط admin

نمایش صفحات متوالی (نمایش 30 تا عکس با GridView) (در برنامه نویسی اندروید)

#3
بالاخره تونستم بنویسشم یا تعریف یک کلاس به این شکل

کد پی‌اچ‌پی:
public class ImageAdapter extends BaseAdapter {

    public 
View      gridView;
    public 
int       position;
    private 
Context  mContext;
    public 
Integer[] mThumbIds  = {
                                
R.drawable.bear,
                                
R.drawable.cow,
                                
R.drawable.dog,
                                
R.drawable.dolphin,
                                
R.drawable.duck,
                                
R.drawable.elephant,
                                
R.drawable.fish,
                                
R.drawable.fox,
                                
R.drawable.giraffe,
                                
R.drawable.lion,
                                
R.drawable.monkey,
                                
R.drawable.mouse,
                                
R.drawable.pig,
                                
R.drawable.rabbit,
                                
R.drawable.sheep,
                                
R.drawable.snake,
                                
R.drawable.zebra
                                
};
    public 
Integer[] mThumbIds2 = {
                                
R.string.bear,
                                
R.string.cow,
                                
R.string.dog,
                                
R.string.dolphin,
                                
R.string.duck,
                                
R.string.elephant,
                                
R.string.fish,
                                
R.string.fox,
                                
R.string.giraffe,
                                
R.string.lion,
                                
R.string.monkey,
                                
R.string.mouse,
                                
R.string.pig,
                                
R.string.rabbit,
                                
R.string.sheep,
                                
R.string.snake,
                                
R.string.zebra

                                
};


    public 
ImageAdapter(Context c) {
        
mContext c;
    }


    @
Override
    
public int getCount() {
        
// TODO Auto-generated method stub
        
return mThumbIds.length;

    }


    @
Override
    
public Object getItem(int position) {
        
// TODO Auto-generated method stub
        
return mThumbIds[position];
    }


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


    @
Override
    
public View getView(int positionView convertViewViewGroup parent) {
        
LayoutInflater inflater = (LayoutInflatermContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        if (
convertView == null) {

            
gridView = new View(mContext);

            
// gereftane laye az  custom_adapter.xml
            
gridView inflater.inflate(R.layout.list_animalnull);

            
TextView textView = (TextViewgridView.findViewById(R.id.textView1);
            
textView.setText(mThumbIds2[position]);

            
ImageView imageView = (ImageViewgridView.findViewById(R.id.imageView1);
            
imageView.setImageResource(mThumbIds[position]);

        } else {
            
gridView = (ViewconvertView;
        }

        return 
gridView;
    }


بعد داخل activiti استفاده کردم به این صورت

 
کد پی‌اچ‌پی:
public class AnimalActiviti extends Activity {

    public 
MediaPlayer player;


    @
Override
    
protected void onCreate(Bundle savedInstanceState) {
        
super.onCreate(savedInstanceState);
        
setContentView(R.layout.animal);
        
GridView grid = (GridViewfindViewById(R.id.gridView1);
        
grid.setAdapter(new ImageAdapter(this));

        
grid.setOnItemClickListener(new OnItemClickListener() {

            @
Override
            
public void onItemClick(AdapterView<?> arg0, View arg1, int postition,
                                    long id) {
                if (postition == 0) {
                    player = MediaPlayer.create(AnimalActiviti.this, R.raw.a);
                    player.start();

                    // Animation animat = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.roteat);
                    // ImageView imageView = (ImageView) findViewById(R.id.imageView1);
                    // imageView.setAnimation(animat);

                }

                else if (postition == 1) {
                    player = MediaPlayer.create(AnimalActiviti.this, R.raw.b);
                    player.start();
                }
            }
        });

    }


مشکل اینجاستکه کل عکس هارو نشون نمیده و عکس تکراری نشون میده؟؟؟؟
پاسخ

نمایش صفحات متوالی (نمایش 30 تا عکس با GridView) (در برنامه نویسی اندروید)

#4
سلام.
در ساختارهای شامل item ، مثل ListView و GridView ، باید View مربوط به هر item (ردیف) که در کدهای Adapter و در روش getView ذکر می شود ، به درستی تعیین شود.
منظورم بخش زیر از کدهای شما است :

کد پی‌اچ‌پی:
@Override
    
public View getView(int positionView convertViewViewGroup parent) {
        
LayoutInflater inflater = (LayoutInflatermContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        if (
convertView == null) {

            
gridView = new View(mContext);

            
// gereftane laye az  custom_adapter.xml
            
gridView inflater.inflate(R.layout.list_animalnull);

            
TextView textView = (TextViewgridView.findViewById(R.id.textView1);
            
textView.setText(mThumbIds2[position]);

            
ImageView imageView = (ImageViewgridView.findViewById(R.id.imageView1);
            
imageView.setImageResource(mThumbIds[position]);

        } else {
            
gridView = (ViewconvertView;
        }

        return 
gridView;
    } 

احتمالا مشکل از همین موردی است که ذکر کردم (آنچه اطمینان داریم، این است که مشکل از کدهای روش getView می باشد).
یک مثال صحیح (البته برای ListView) را از کلید شماره 2961 ذکر می کنم (تفاوتی با GridView ندارد) :

کد پی‌اچ‌پی:
@Override
        
public View getView(int positionView convertViewViewGroup parent) {
                
View row convertView;         
                if (
row == null) {
                        
LayoutInflater inflater = (LayoutInflatergetSystemService(Context.LAYOUT_INFLATER_SERVICE);
                        
row inflater.inflate(R.layout.list_itemparentfalse);
                }
                
                
String stringName "string_key_" String.valueOf(position+1); 
                
int string_res_ID getResources().getIdentifier(stringName,"string",getPackageName());
                
String my_string getResources().getString(string_res_ID);
                
TextView tv = (TextViewrow.findViewById(R.id.textView1);
                
tv.setText(my_string);
                
                
String imageName "key_" String.valueOf(position+1); 
                
int image_res_ID getResources().getIdentifier(imageName,"drawable",getPackageName());
                
ImageView iv = (ImageViewrow.findViewById(R.id.imageView1);
                
iv.setImageResource(image_res_ID);

                return 
row;
        } 

ساختار آن را به دقت بررسی و با کد خود مقایسه کنید. منظورم بخش زیر است :

کد پی‌اچ‌پی:
View row convertView;         
                if (
row == null) {
                        
LayoutInflater inflater = (LayoutInflatergetSystemService(Context.LAYOUT_INFLATER_SERVICE);
                        
row inflater.inflate(R.layout.list_itemparentfalse);
                } 

ببینید که به چه صورت View مربوط به هر item را ساخته است (در اینجا با نام row).

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


پرش به انجمن:


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