بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

ایجاد context menu برای ایتم های لیست ویو (حل شد)

مدیریت گفتگو
sana ebadi 9 سال پیش
آخرین تغییر: 9 سال پیش

سلام بچه ها ذامیدوارم حالتون خوب باشه :)

من یه لیست ویو ساختم به این صورت و contextMenu برای ایتم هاش :)

کدام اینه :

//MainActivity

public class MainActivity extends AppCompatActivity {

private String[] names;
private ListView lst_content;
private ViewGroup linear_content;
 
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);


names = new String[]{
"Sana", "Sara", "Sami", "Sani", "Baba", "Mom", "Ali Reza"};
  MyAdapter adapter = new MyAdapter(getApplicationContext());
lst_content = (ListView) findViewById(R.id.lst_content);
lst_content.setAdapter(adapter);

registerForContextMenu(lst_content);
}

//کلاس اداپتر که یک کلاس داخلی در mainActivityهستش
 private class MyAdapter extends BaseAdapter {

LayoutInflater mInflater;

public MyAdapter(Context context) {
mInflater = LayoutInflater.from(context);

}

@Override
public int getCount() {
return names.length;
}

@Override
public Object getItem(int position) {
return position;
}

@Override
public long getItemId(int position) {
return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

View view;

if (convertView == null) {
view = mInflater.inflate(R.layout.items_layout, parent, false);

} else {
view = convertView;
}

TextView txt_name = (TextView) view.findViewById(R.id.txt_name);
txt_name.setText(names[position]);
linear_content = (ViewGroup) view.findViewById(R.id.linear_content);

linear_content.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {

Intent intent = new Intent(MainActivity.this , DetailActivity.class);
MainActivity.this.startActivity(intent);
}
});

return view;
}
}

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);

AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;

menu.setHeaderTitle("Options...");
menu.add(0, v.getId(), 0, "Call");
menu.add(0, v.getId(), 0, "Sms");
}


@Override
public boolean onContextItemSelected(MenuItem item) {
if (item.getTitle() == "Call") {
Toast.makeText(getApplicationContext(), "Call", Toast.LENGTH_SHORT).show();

} else if (item.getTitle() == "Sms") {
Toast.makeText(getApplicationContext(), "Sms", Toast.LENGTH_SHORT).show();

} else {
return false;
}

return true;
}
}
 
 
 
 

ولی وقتی روی ایتماها longClick میکنم هیچ contextMenu ایی نمایش داده نمیشه .ن اروری و ن کرشی :(

مشکل چی میتونه باشه بچه ها ؟

ممنون از شما ... یا علی 

نظرات

kazemian 9 سال پیش
ببخشید متد LongClick رو کجا نوشتید؟
sana ebadi 9 سال پیش
لازم نیس !!! کلا خاصیت contextMenu اینو میگه با کلیک طولانی نمایش داده میشه دوست من . و ربطی به نوشتن متد onLong نیست :)
kazemian 9 سال پیش
اهاان فکر کردم شبیه به ریسایکلر ویو هست!!!
sana ebadi 9 سال پیش
کلا دوست عزیز این منو (Context menu) ربطی به ویو نداره . فقط یک ویو میخواد میتونه لیست ویو باشه میتونه ریسایکلر ویو باشه میتونه TextView , ImageView .... یا هر ویویی دیگه ای باشه و ربطی به setOnLongClickListener نداره . فقط برا نمایشش باید یک کلیک نسبتا طولانی انجام شه ن یک کلیک ساده ! اوکی :)
Devtpoint 9 سال پیش
سلام . امیدوارم حال شما هم خوب باشه . کاشکی بین کلاس ها یه خط میگذاشتید که بتونیم ب تفکیک کدها رو بخونیم . ببینید این لینک بدردتون میخوره : لینک
sana ebadi 9 سال پیش
ممنون از شما ولی کلاس های جدا نیست دوست من فقط اون کلاس اداپتر من یک inearClass هست که مشخصه و بقیش خود activityMain هست چشم به لینک سر میزنم مرسی از شما :)
sana ebadi 9 سال پیش
دوست من @Ak1369 درست شد ممنون از لینکی که پیشنهاد دادین درست شد .:)
Devtpoint 9 سال پیش
کجاش مشکل داشت همون بخش رو برای استفاده میگذاشتید.
sana ebadi 9 سال پیش
کلا دوست من این چیزی که من میخوام نمیشه ینی با اداپتر جور در نمیاد ولی وقتی بخوام اون لیست ویوی که از یه ارایه ی استاتیک و یک لی اوت خود اندروید استفاده میشه اوکیه مشکلی نیس . و من برای ریسایکر ویو ساختم عالی بود ینی از یه لینک دیگه ساختم اینم لینک لینک برای ریسایکلر استفاده کردم عالی بود ولی برای لیست ویو ن دیگه چون نمیهوام با لیست ویو کارو انجام بدم با ریسایکلر جور شد . بارم ممنون :)

هنوز پاسخی ثبت نشده است


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .