۱۳۹۴/۰۴/۲۵, ۱۲:۲۵ ب.ظ
۱۳۹۴/۰۴/۲۵, ۰۹:۲۴ ب.ظ
روش اول اینه:
در داخل گرید ویو بجای قرار دادن ImagView برای هر آیتم ..از LinearLayout استفاده کنید که داخل آن یک ImagView و یک TextView قرار داشته باشه..
روش دوم:
روش بعدی اینه که بجای استفاده از ImagView ، از تگ TextView استفاده کنید ..بعدش در داخل تکست ویو یک دستور است که میتوانید برای متن خودتون یک تصویر هم قرار دهید.
در داخل گرید ویو بجای قرار دادن ImagView برای هر آیتم ..از LinearLayout استفاده کنید که داخل آن یک ImagView و یک TextView قرار داشته باشه..
روش دوم:
روش بعدی اینه که بجای استفاده از ImagView ، از تگ TextView استفاده کنید ..بعدش در داخل تکست ویو یک دستور است که میتوانید برای متن خودتون یک تصویر هم قرار دهید.
کد پیاچپی:
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawableTop="@drawable/my_drawAble"
/>
۱۳۹۴/۰۴/۲۶, ۱۲:۲۵ ب.ظ
بالاخره تونستم بنویسشم یا تعریف یک کلاس به این شکل
بعد داخل activiti استفاده کردم به این صورت
مشکل اینجاستکه کل عکس هارو نشون نمیده و عکس تکراری نشون میده؟؟؟؟
کد پیاچپی:
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 position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
gridView = new View(mContext);
// gereftane laye az custom_adapter.xml
gridView = inflater.inflate(R.layout.list_animal, null);
TextView textView = (TextView) gridView.findViewById(R.id.textView1);
textView.setText(mThumbIds2[position]);
ImageView imageView = (ImageView) gridView.findViewById(R.id.imageView1);
imageView.setImageResource(mThumbIds[position]);
} else {
gridView = (View) convertView;
}
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 = (GridView) findViewById(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();
}
}
});
}
}
مشکل اینجاستکه کل عکس هارو نشون نمیده و عکس تکراری نشون میده؟؟؟؟
۱۳۹۴/۰۴/۲۶, ۱۰:۳۳ ب.ظ
سلام.
در ساختارهای شامل item ، مثل ListView و GridView ، باید View مربوط به هر item (ردیف) که در کدهای Adapter و در روش getView ذکر می شود ، به درستی تعیین شود.
منظورم بخش زیر از کدهای شما است :
احتمالا مشکل از همین موردی است که ذکر کردم (آنچه اطمینان داریم، این است که مشکل از کدهای روش getView می باشد).
یک مثال صحیح (البته برای ListView) را از کلید شماره 2961 ذکر می کنم (تفاوتی با GridView ندارد) :
ساختار آن را به دقت بررسی و با کد خود مقایسه کنید. منظورم بخش زیر است :
ببینید که به چه صورت View مربوط به هر item را ساخته است (در اینجا با نام row).
در ساختارهای شامل item ، مثل ListView و GridView ، باید View مربوط به هر item (ردیف) که در کدهای Adapter و در روش getView ذکر می شود ، به درستی تعیین شود.
منظورم بخش زیر از کدهای شما است :
کد پیاچپی:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
gridView = new View(mContext);
// gereftane laye az custom_adapter.xml
gridView = inflater.inflate(R.layout.list_animal, null);
TextView textView = (TextView) gridView.findViewById(R.id.textView1);
textView.setText(mThumbIds2[position]);
ImageView imageView = (ImageView) gridView.findViewById(R.id.imageView1);
imageView.setImageResource(mThumbIds[position]);
} else {
gridView = (View) convertView;
}
return gridView;
}
احتمالا مشکل از همین موردی است که ذکر کردم (آنچه اطمینان داریم، این است که مشکل از کدهای روش getView می باشد).
یک مثال صحیح (البته برای ListView) را از کلید شماره 2961 ذکر می کنم (تفاوتی با GridView ندارد) :
کد پیاچپی:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
if (row == null) {
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate(R.layout.list_item, parent, false);
}
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 = (TextView) row.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 = (ImageView) row.findViewById(R.id.imageView1);
iv.setImageResource(image_res_ID);
return row;
}
ساختار آن را به دقت بررسی و با کد خود مقایسه کنید. منظورم بخش زیر است :
کد پیاچپی:
View row = convertView;
if (row == null) {
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate(R.layout.list_item, parent, false);
}
ببینید که به چه صورت View مربوط به هر item را ساخته است (در اینجا با نام row).