להגיב ל: הוספת כמה סוגי טקסטים על כפתור אחד
קדם ‹ Forums ‹ הייטק ‹ Mobile Development ‹ הוספת כמה סוגי טקסטים על כפתור אחד ‹ הייטק
-
כמו שכתבת את צריכה Adapter. ה-Adapter הוא כמו גשר בין התצוגה לתוכן המוכל בו. הוא אחראי לייצר תצוגה מותאמת אישית עבור כל פריט. יש לו ארועים משלו, תוכן משלו וכו וכו. לאדפטר את מכילה Layout מסויים. את יכולה אפילו לכל שורה לייאוט שונה, זה את עושה בפונקציה: getView. שם את מגדירה מי הlayout שלו, מה הוא מכיל, איזה טקסטים וכו וכו… ממש כמו activity. מצרפת דוגמא של basicAdapter: קוד ב activity private ListView list;
private final ArrayListpairs = new ArrayList ();
private Activity context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pairs.add(new RestaurantsDetails(“McDonald’s”, “mcd”));
pairs.add(new RestaurantsDetails(“Subway”, “mcd”));
pairs.add(new RestaurantsDetails(“Pizza Hut”, “mcd”));
pairs.add(new RestaurantsDetails(“Burger King”, “mcd”));
list = (ListView) findViewById(R.id.listview);
AdapterViewCustom adapter = new AdapterViewCustom(this, pairs);
list.setAdapter(adapter);
list.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
@Override
public void onItemClick(android.widget.AdapterView parent,
View view, int position, long id) {
Toast.makeText(getApplicationContext(),
pairs.get(position).name, Toast.LENGTH_LONG).show();
}
});
} מחלקת dataLayer public class RestaurantsDetails {
public String name;
public String img;
public RestaurantsDetails(String name, String img) {
this.name = name;
this.img = img;
}
} מחלקת ה adapter public class AdapterViewCustom extends BaseAdapter {
private Activity context_1;
private ArrayListpairs;
public AdapterViewCustom(Activity context,
ArrayListpairs) {
context_1 = context;
this.pairs = pairs;
}
@Override
public int getCount() {
return pairs.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = null;
if (convertView == null) {
convertView = LayoutInflater.from(context_1).inflate(
R.layout.custom_row, null);
viewHolder = new ViewHolder();
viewHolder.img = (ImageView) convertView
.findViewById(R.id.log_img);
viewHolder.txt = (TextView) convertView
.findViewById(R.id.tv_view);
/**
* At very first time when the List View row Item control’s
* instance is created it will be store in the convertView as a
* ViewHolder Class object for the reusability purpose
**/
convertView.setTag(viewHolder);
} else {
/**
* Once the instance of the row item’s control it will use from
* already created controls which are stored in convertView as a
* ViewHolder Instance
* */
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.txt.setText(pairs.get(position).name);
int id = context_1.getResources().getIdentifier(
pairs.get(position).img, “drawable”,
context_1.getPackageName());
viewHolder.img.setImageResource(id);
return convertView;
}
public class ViewHolder {
public final ImageView img;
public final TextView txt;
}
} כדאי שתקראי על הנושא קצת באינטרנט ותחליטי איזה סוג של אדפטר מתאים לך בדיוק.