PDA

View Full Version : اشکال در view.getId() در button.setOnCli8ckListener



zahra_jalil
چهارشنبه 09 بهمن 1392, 10:57 صبح
سلام دوستان
من یک custom RelativeLayout ایجاد کردم و به صورت داینامیک تعداد نامشخصی button به آن اضافه می کنم(تعداد آن را از sqlite می گیرم!)
در هنگام اضافه کردن هرکدام از button ها به آن Id می دهم و رویداد OnClickListener و OnTouchListener را برای آن Set می کنم!

معمولا تعداد Button های من زیاد است .بنابراین در screen به صورت یک جا قابل مشاهده نیست.پس من برای layout خود OnTouchListener استفاده کردم و Layout را حرکت می دهم تا بتوانم تمام button ها را مشاهده کنم!


وقتی ابتدا صفحه load می شودو روی button هایی که در ابتدا قابل مشاهده هستند ، click می کنم، Id را درست نمایش می دهد اما همین که به قسمت های پایین تر در layout می روم ، همان Id های button های ابتدایی را دوباره get میکند!

نکته: من متد OnDraw را با استفاده از canvas تغییر دادم!

کسی راه حلی داره ؟



:متفکر::متفکر::متفکر::متفکر:: تفکر:

smemamian
چهارشنبه 09 بهمن 1392, 13:23 عصر
از scrollview و LinearLayout استفاده کن. setOnClickListener هم داخل همون حلقه ی for قرار بده :

for(int i = 0 ; i < length ; ++i){
LinearLayout linearlayout = (LinearLayout)findViewById(R.id.mylinearlayout);
Button button = new Button(getApplicationContext());
button.setId(i+1);
final int j = i ;
LinearLayout.LayoutParams imageparams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
button.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), String.valueOf(j), Toast.LENGTH_LONG).show();
}
});
linearlayout.addView(button, imageparams);


}

zahra_jalil
پنج شنبه 10 بهمن 1392, 07:31 صبح
ممنون از توجهتون.
از این روش هم استفاده کردم.اما اولا اینکه با Zoom کاملادیده نمی شن و اندازه scroll عمودی و افقی در ScrollViewبه صورت اتوماتیک زیاد نمی شه!
دوما اینکه چون در برنامه من باید بتونم button ها رو حرکت بدم ، scrollView این حرکت رو کند می کرد