在列表中选择一个项目使用 Toast 查看



我正在尝试显示我的列表视图中的项目,我在日食时没有收到任何错误,但是如果我单击一个项目,我的应用程序会说它正在关闭。

这是我使用 toast 的代码 '

    private void registerClickCallback() {
    ListView list1 = (ListView) findViewById(R.id.listView1);
    list1.setOnItemClickListener(
       new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View viewClicked, int postion, long id) {
            TextView textView = (TextView) viewClicked;
            String message = "This is the message: " + textView.getText().toString();
            Toast.makeText(MainActivity.this, message, Toast.LENGTH_LONG).show();
        }
    });`

这是我列表的阵列适配器

 `private class MyListAdapter extends ArrayAdapter<Messages>{
    public MyListAdapter() {
        super(MainActivity.this, R.layout.item_view, messages);
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // make sure we have a view to work with
        View itemView = convertView;
        if (itemView == null){
            itemView = getLayoutInflater().inflate(R.layout.item_view, parent, false);  
        }
        // find the message to work with
        Messages currentMessages = messages.get(position);
        // fill the view for icon (The icon used in my view)
        ImageView imageView = (ImageView)itemView.findViewById(R.id.item_icon);
        imageView.setImageResource(currentMessages.getIconID());
        // the message, setting the message written to the message on my view  
        TextView textMessage = (TextView) itemView.findViewById(R.id.item_message);
        textMessage.setText(currentMessages.getMessage());
        // the sender, filling the sender to the sender on my view
        TextView textSender = (TextView) itemView.findViewById(R.id.item_sender);
        textSender.setText(currentMessages.getSender());
        return itemView; // getting the item view back 
    }
} // custom adapter ends`

我不知道问题出在哪里,任何帮助将不胜感激

这一行就在这里

TextView textView = (TextView) viewClicked;

不是你获取文本视图的方式

你需要

TextView textView = (TextView) viewClicked.findViewById(r.id.textviewid);
// list item click replace with this one
        private void registerClickCallback() {
                ListView list1 = (ListView) findViewById(R.id.listView1);
                list1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> parent, View viewClicked, int postion, long id) {
                        //TextView textView = (TextView) viewClicked;
                       // String message = "This is the message: " + textView.getText().toString();
                       String message = list1 .getItemAtPosition(position).toString();
                        Toast.makeText(MainActivity.this, message, Toast.LENGTH_LONG).show();
                    }
                });`

最新更新