بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
صدا زدن یک non static method از داخل یک کلاس دیگر
برای صدا زدن یک non static method از داخل یک کلاس دیگر چه روشی وجود دارد؟
فقط مشکلی که وجود داره اینه که این method قراره در activity خودش تغییراتی ایجاد کنه. پس روش ساخت یک نمونه (instance) از روی کلاسی که method در آن قرار دارد در اینجا جوابگو نیست.
برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال
FSR
8 سال پیش
0
0
سلام
خب میتونید متدی داخل همون کلاس درست کنید که با صدا زدن اون تغییرات رو داخل کلاس اعمال کنه.
بیشتر توضیح بدید مثلا شما میخواید با کلیک بروی یک باتون تغییرات داخل یکی از اکتیوتی هاتون بدید در صورتی نمیخواید واردش بشید ؟
در این صورت هم میتونید از کلاس G برای تغییرات و استفاده از اونها داخل اکتیویتی دیگه تون استفاده کنید.
پاسخ به سوال
FSR
8 سال پیش
0
0
سلام
یه نمونه کد :
کلاس لیست ویو
public class ActivityListview extends ActivityEnhance {
@Override
protected void onResume() {
super.onResume();
if (G.adapter != null) {
G.adapter.notifyDataSetChanged();
}
}
//List
ListView lstConntent;
/*
* استاتیک کردن متغییر
*/
static EditText edt;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_listview);
edt = (EditText) findViewById(R.id.edt);
G.adapter = new AdapterListview(G.data_list);
lstConntent = (ListView) findViewById(R.id.lstConntent);
lstConntent.setAdapter(G.adapter);
G.getData();
G.adapter.notifyDataSetChanged();
}
/*
* متد استاتیک
*/
public static void setEditText(String data) {
edt.setText(data);
}
}
کلاس ادپتر
public class AdapterListview extends ArrayAdapter<String> {
public AdapterListview(ArrayList<String> array) {
super(G.context, R.layout.adapter_listview, array);
}
private static class ViewHolder {
TextView txtName;
public ViewHolder(View view) {
txtName = (TextView) view.findViewById(R.id.txtName);
}
public void fill(final AdapterListview adapterListview, final String item, final int position) {
txtName.setText(item);
txtName.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
/*
* صدا زدن مستقیم متد
*/
ActivityListview.setEditText(item);
}
});
}
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
String item = getItem(position);
if (convertView == null) {
convertView = G.layoutInflater.inflate(R.layout.adapter_listview, parent, false);
holder = new ViewHolder(convertView);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.fill(this, item, position);
return convertView;
}
}
فقط کافیه متد ها و متغییر هارو استاتیک تعریف کنید
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .