gpt4 book ai didi

android - 如何从 ArrayAdapter 注册 ForContextMenu

转载 作者:行者123 更新时间:2023-11-29 14:52:04 25 4
gpt4 key购买 nike

我正在显示消息列表,使用从 Adaptar 显示 ListView 的 Activity,如下所示。

我需要在下面的 DiscussArrayAdapter 类中的 ImageView 中注册 ContextMenu 菜单。

如果我只是从 DiscussArrayAdapter 调用 registerForContextMenu(arrowImage); 它不会接受它。

另外,我不知道在哪里重写方法 onCreateContextMenu

我的messageActivity如下:

public class MessagesActivity extends Activity  {
private ListView listView = null;

/** Called when the activity is first created. */
private DiscussArrayAdapter adapter;
private ListView lv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.activity_discuss);

registerReceiver(mHandleMessageReceiver, new IntentFilter(
DISPLAY_MESSAGE_ACTION));

adapter = new DiscussArrayAdapter(getApplicationContext(), R.layout.listitem_discuss);

lv.setAdapter(adapter);

我有 DiscussArrayAdapter 类:

public class DiscussArrayAdapter extends ArrayAdapter<OneMessage>{

private /*TextView*/EditText msgTextView;
private TextView sender;

private LinearLayout wrapper;

private SqlHelper dbHelper = null;
private Context context;
@Override
public void add(OneMessage object) {

dbHelper.addNewMessage(object);
super.add(object);
}

public DiscussArrayAdapter(Context context, int textViewResourceId) {
super(context, textViewResourceId);
this.context=context;

if (dbHelper == null) {
dbHelper = new SqlHelper(context);

}


}

public int getCount() {

return dbHelper.getContactsCount();
}

public OneMessage getItem(int index) {

return dbHelper.getOneComment(index+dbHelper.lastRawID());
}

public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
if (row == null) {
LayoutInflater inflater = (LayoutInflater) this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate(R.layout.listitem_discuss, parent, false);
}

wrapper = (LinearLayout) row.findViewById(R.id.wrapper);

ImageView arrowImage = (ImageView) row.findViewById(R.id.aquaplayicon);
// this .registerForContextMenu(arrowImage);
OneMessage coment = getItem(position);

msgTextView =/*(TextView)*/(EditText) row.findViewById(R.id.comment);

为简洁起见,我省略了其余代码。

最佳答案

context 菜单函数都是为类Activity 定义的,它们不存在于Adapter 类。

所以要么你需要让你的 adapter 成为 activity 的子类,要么你需要将 activity 传递给 adapter 以便它可以调用 register 函数,并且 Activity 将需要处理 context 菜单(或将事件传递给适配器来处理它)。

关于android - 如何从 ArrayAdapter 注册 ForContextMenu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15011488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com